Xtend

Xtend
Logo.
Dato for første version 2011
Paradigme Objektorienteret , bydende nødvendigt , funktionel
Forfatter Sven Efftinge, Sebastian Zarnekow
Udvikler typefox
Sidste version 2.12.0
Indtastning Statisk , stærk , slutning
Påvirket af Java , Scala , Groovy , Smalltalk , Xpand
Operativ system Multiplatform
Licens Formørkelse af formørkelse
Internet side http://www.xtend-lang.org

Xtend er et generelt programmeringssprog på højt niveau til Java Virtual Machine . Syntaktisk og semantisk, Xtend har sine rødder i programmeringssproget Java, men fokuserer på mere kortfattet syntaks og et par ekstra funktioner såsom typen inferens , udvidelse metoder, og operatør overbelastning . Da det primært er et objektorienteret sprog , integrerer det også funktioner, der er kendt fra funktionel programmering , for eksempel lambda-udtryk. Xtend er statisk skrevet og bruger Java-typesystemet uden ændringer. Den er sammensat i Java-kode og integreres således problemfrit med alle eksisterende Java-biblioteker.

Xtend-sproget og dets IDE er udviklet som et projekt på Eclipse.org og deltager i det årlige Eclipse- frigivelsestog . Koden er open source under Eclipse Public License . Alligevel kan sproget kompileres og køres uafhængigt af Eclipse-platformen.

Historisk

Xtend kommer fra Xtext , som er den teknologi, der bruges til at definere sproget og editoren. Xtend blev først frigivet som en del af Xtext i Eclipse Indigo-versionen ijuni 2011. Siden frigivelsen af Eclipse Juno (Juni 2012, Xtend version 2.3), Xtend er blevet et selvstændigt projekt.

Xtend-sproget beskrevet her bør ikke forveksles med det gamle sprog med det samme navn i Xpand-projektet. Oprindeligt blev Xtend navngivet Xtend2 for en bedre skelnen. '2' blev snart droppet for enkelheds skyld. Med sine modeludtryk er Xtend beregnet til at erstatte al Xpand-teknologi.

Filosofi

Java er et af de mest populære programmeringssprog nogensinde, og det har gennem årene udviklet et enormt økosystem af biblioteker og værktøjer. Imidlertid er dens syntaks ret detaljeret, og nogle begreber mangler og tilføjes kun meget langsomt. Xtend forsøger at få det bedste ud af Java, men dræber syntaktisk støj og tilføjer vigtige nye funktioner for at give bedre læsbarhed og mere kraftfuld kode.

For at lette læring for Java-udviklere svarer syntaksen til Xtend til Java. Xtend opretholder maksimal kompatibilitet med Java ved at kompilere Java-kode og bruge Java-typesystemet. Java-kode og Xtend-kode kan efter eget valg blandes i det samme projekt. Ved at bruge en kombination af lambda-udtryk og udvidelsesmetoder kan sproget udvides ved hjælp af biblioteker, det vil sige uden at ændre selve sproget. Et lille standardbibliotek gør det tungt brugt.

Xtend er altid designet med gode værktøjer i tankerne. Den EDI Xtend giver Eclipse-baserede ting som syntaksfremhævning, kode færdiggørelse, den refactoring , navigation og debugging. Det integreres også tæt med Eclipse Java Development Toolkit.

Semantik

Xtend ligner Java på mange måder. Her er et eksempel på en Xtend-fil:

package sample import java.util.List class Greeter { def greetThem(List<String> names) { for(name: names) { println(name.sayHello) } } def sayHello(String name) { 'Hello ' + name + '!' } }

Xtend giver typeforståelse, dvs. navnetypen og returneringstyperne af metoder kan udledes fra sammenhængen. De klasser og metoder er offentlige som standard, private områder. Semikoloner er valgfri.

Eksemplet viser også sayHello-metoden kaldet en udvidelsesmetode, det vil sige som et kendetegn ved dens første argument. Udvidelsesmetoder kan også leveres af andre klasser eller forekomster.

I stedet for at bruge for-loop-imperativet kunne man bruge et lambda-udtryk i funktionel stil i firkantede parenteser og kalde den højere ordens funktion for Hver i udvidelsessyntaks på listen:

def greetThem(List<String> names) { names.forEach [ println(sayHello) ] }

Bemærk, at lambda-parameteren, hvis den ikke er specificeret, kaldes lambda, som kan springes sådan over i Java. Dens type udledes i form af en tegnstreng. Lambda-udtryk tvinges også automatisk til grænseflader med en enkelt metode, så de kan overføres, for eksempel som en java.lang.Comparable-fil.

Skabelonudtryk er karakterstrenge med flere linjer inden for tredobbelte citater med interpolerede værdier i franske citater. I eksemplet ovenfor kunne vi skrive

def sayHello(String name) ''' Hello «name» ! '''

Xtend tilbyder intelligent styring af hvidt rum - ovenstående tekst indrykkes ikke i output - hvilket opfylder kravene til kodegenerering.

Andre funktioner på sproget inkluderer flere metoder, et kraftigt skifteudtryk og operatøroverbelastning ved hjælp af biblioteksmetoder.

Noter og referencer

  1. Sven Efftinge, “  Officiel Xtend-hjemmeside på  ”, Eclipse.org ,14. oktober 2013( læs online )
  2. "  Eclipse Indigo release  " , Wiki.eclipse.org ,30. marts 2011(adgang 14. september 2013 )

eksterne links

  • Sven Efftinge, Sebastian Zarnekow, udvidelse af Java , Pragmatic Programmer Magazine,december 2011.
  • Alex Blewitt: Xtend udvider Java , interview med Sven Efftinge, InfoQ, juni 2012.