Eclipse

***Eclipse*** kode irekiko software plataforma bat da, batez ere garapen-ingurune integratu (IDE) gisa erabiltzen dena. Hasiera batean IBM enpresa multinazionalak garatu zuen bere VisualAge  tresna-familiaren ordezko gisa, baina gaur egun Eclipse Fundazioa irabazi-asmorik gabeko erakunde independenteak garatzen eta kudeatzen du. Fundazio horrek komunitate ireki bat sustatzen du, eta hainbat produktu, zerbitzu eta gaitasun osagarri biltzen ditu.

Eclipsek workspace bat eta plugin sistema hedakor bat dauzka, erabiltzaileek ingurunea moldatzeko aukera emanez. Hasiera batean Java aplikazioak garatzeko sortu zen, eta horretarako Java Development Toolkit (JDT) eta Eclipse Compiler for Java (ECJ) erabiltzen dira. Bi tresna horiek Eclipserekin sortuak izan dira, eta Eclipseren parte izateaz gain, plataforma bera garatzeko ere erabiltzen dira.

Pluginen bidez, hainbat programazio-lengoaiarekin lan egin daiteke: C, C++, Python, PHP, Ruby, Rust, Scala, JavaScript edo R, besteak beste. Gainera, garapen espezializaturako paketeak eskaintzen dira, hala nola Eclipse JDT (Java eta Scala-rako), Eclipse CDT (C/C++-rako) eta Eclipse PDT (PHP-rako). LaTeX dokumentuak edo Mathematica-rentzako paketeak garatzeko ere erabili daiteke.

2000ko hamarkadan, Eclipse Java IDE erabilienetakoa izan zen, nahiz eta IntelliJ IDEA-k 2016an gainditu zuen arte.

Software hau doakoa eta kode irekikoa da, Eclipse Public License lizentziapean argitaratua, baina ez da bateragarria GNU General Public License-rekin .

## Historia 
Eclipse Kanadako IBMren proiektu gisa hasi zen. OTIk (Object Technology International) garatu zuen, VisualAge ordezkatzeko asmoz. 2001eko azaroan, partzuergo bat sortu zen, kode irekiko garapenerako. 2003an Eclipse Fundazioa sortu zen, IBM atzean utzita.

Bertsioen laburpena:

## Arkitektura 
Eclipseren oinarria Bezero Aberastuaren Plataforma da (ingelesez, Rich Client Platform edo RCP). Plataforma honek aplikazio aberastuak garatzeko beharrezkoak diren osagai nagusiak eskaintzen ditu, Eclipseren kasuan:

* Plataforma nagusia: Eclipse abiarazteko eta pluginen exekuzioa gauzatzeko.
* OSGi: Software-moduluak paketatzeko plataforma estandar bat, Eclipsek Equinox inplementazioaren bidez erabiltzen duena.
* Standard Widget Toolkit (SWT): Java-rako widget multzo bat.
* JFace: Erabiltzaile interfazea sinplifikatzeko geruza, testu-editoreak, fitxategi-kudeaketa eta abar eskaintzen dituena.
* Eclipse Workbench: Itxura, editoreak, perspektibak eta asistentziak (*wizards*).

Eclipsek bere widget grafikoak Standard Widget Toolkit bidez inplementatzen ditu. Horretan desberdintzen da Java aplikazio gehienetatik, hauek normalean Abstract Window Toolkit (AWT), Swing edo JavaFX erabiltzen baitituzte. Eclipseko erabiltzaile interfazeak, ordea, SWT geruza bat erabiltzen du, JFace, aplikazio grafikoen garapena errazteko.

Eclipseren garapen-ingurune integratua (IDE) plugin-arkitekturan dago oinarrituta: funtzionalitate guztiak pluginen bidez eskaintzen dira, exekuzio-sistemaren gainean. Oinarrizko nukleo txiki bat izan ezik, Eclipseko osagai guztiak pluginak dira; horren ondorioz, modu berean integratzen dira eta funtzionalitate guztiak maila berekoak dira. 

Plugin-sistemari esker, Eclipse hainbat programazio-lengoaiarekin heda daiteke, hala nola C, C++, Python edo JavaScript. Halaber, LaTeX bezalako testu-prozesaketarako lengoaiekin lan egiteko aukera ematen du, baita sareko aplikazioekin (telnet) edo datu-baseak kudeatzeko sistemekin ere. Arkitektura horrek edozein luzapen mota garatzea ahalbidetzen du, adibidez konfigurazio-kudeaketarako tresnak. Eclipse SDKk Java eta CVS-rako euskarria eskaintzen du, eta beste bertsio-kontrol sistema batzuk hirugarrenen pluginen bidez erabil daitezke.

Eclipsek aplikazio bezeroak garatzeko framework aberastuak erabiltzen ditu, aplikazio grafikoak, software-ereduen definizioa eta manipulazioa, edota web-aplikazioak sortzeko. Horren adibide da GEF (*Graphic Editing Framework*) plugina, editore bisualak garatzeko erabilia, testu-prozesadore wysiwyg motako testu-prozesadoreak, UML diagra-editoreak eta erabiltzaile interfaze grafikoak (GUI), besteak beste. GEF bidez sortutako editoreak Eclipse barruan integratzen dira, eta haren interfaze pertsonalizagarria eta beste plugin batzuekin bateragarritasuna aprobetxatzen dute.

Eclipse SDKk barne hartzen ditu Java garapenerako tresnak (JDT), Java konpiladore inkremental integratu batekin eta iturburu-kodearen eredu oso batekin. Horrek refactorizazio teknika aurreratuak eta kodearen analisia egitea ahalbidetzen du. IDEak workspace edo lan-eremu bat erabiltzen du, kasu honetan fitxategi-sistema lau baten gaineko metadatu multzo bat; horri esker, kanpotik egindako fitxategi-aldaketak onartzen dira, dagokion baliabidea freskatu ondoren.

Eclipse, halaber, Wayland-en exekutatzeko egokitu zen 2014ko Google Summer of Code (GSoC) proiektuan. 

## Datuak 
Jarraian ematen diren zifrak **Eclipse 3.2.1** bertsioari dagozkio, eta SLOCCount tresnaren bidez lortutako datuetan oinarritzen dira.

SLOCCount-ek iturburu-kodeko lerro kopurua (*source lines of code*, SLOC) aztertzen du, eta datu horiek baliatuta garapen-esfortzua estimatzeko eredu estandar batzuk aplika daitezke. Kasu honetan, COCOMO eredua erabili da, zehazki honako formula sinplifikatua:

: 2,4 × (KSLOC1,05)

non KSLOC milaka kode-lerro adierazten dituen. Eredu horren arabera, Eclipse 3.2.1 bezalako software-proiektu bat garatzeko **604 pertsona-urte** inguruko esfortzua beharko litzateke.

Garapen-kostuen estimazioa egiteko Estatu Batuetako programatzaileen batez besteko soldata erabili da, urteko **$56.286**. Kopuru hori 2,40 faktorearekin biderkatu da, soldatez bestelako gastuak kontuan hartzeko (azpiegitura, argindarra, komunikazioak, administrazioa eta abar).

### Eclipse 3.2.1en egoera kuantitatiboa 
Datu horiek orientagarriak dira, eta ez dute zertan islatzen benetako garapen-prozesuaren antolaketa zehatza; hala ere, Eclipse bezalako eskala handiko software-proiektu baten dimentsioa agerian uzten dute.

### Erabilitako programazio-lengoaiak 
Beste datu esanguratsu bat Eclipseren garapenean erabilitako programazio-lengoaien aniztasuna da. SLOCCount-en arabera, **Java** da gehien erabilitako lengoaia, baina beste batzuk ere ageri dira, bereziki plataformaren osagai baxuagoetan.

## Eclipse ekosistema 
**Eclipse** ez da soilik garapen-ingurune integratu (IDE) bat, Eclipse Fundazioak koordinatutako software-proiektu ugariren multzo zabala baizik. Multzo horri **Eclipse ekosistema** deritzo, eta software librean oinarritutako tresnak, plataformak eta frameworkak biltzen ditu, batez ere softwarearen diseinuari, garapenari, probari eta mantentzeari lotutakoak.

Ekosistemaren ezaugarri nagusia arkitektura modularra da: Eclipsek **plugin** edo hedapenetan oinarritutako eredua erabiltzen du, OSGi estandarra jarraituz. Horri esker, Eclipse ingurunea behar espezifikoetara egokitu daiteke, lengoaia, plataforma edo erabilera-esparru desberdinetarako.

### Proiektu-mailak eta antolaketa 
Eclipse ekosistema hainbat mailatan antolatzen da, garapenaren eskalagarritasuna eta komunitateen autonomia errazteko helburuarekin. Antolaketa horren oinarria proiektu hierarkikoen sistema da, non maila bakoitzak erantzukizun eta irismen desberdinak dituen.

Eclipse ekosistema hainbat mailatan antolatzen da. Maila gorenean **top-level project** edo goi-mailako proiektuak daude; horietako bakoitzak azpi-proiektu ugari har ditzake bere baitan. Antolaketa horrek garapenaren eskalagarritasuna eta komunitateen autonomia errazten ditu.

#### Goi-mailako proiektuak (Top-level projects) 
Eclipse ekosistema egituratzeko, Eclipse Fundazioak **goi-mailako proiektuak** (*top-level projects*) definitzen ditu. Proiektu horiek arlo funtzional edo teknologikoen arabera antolatzen dira, eta bakoitzak azpi-proiektu ugari har ditzake bere baitan. 2011 inguruan, Eclipse ekosistema hamaika goi-mailako proiektutan egituratzen zen, nahiz eta antolaketa hori denboran zehar egokitzen joan den.

Garai hartan, honako hauek ziren goi-mailako proiektu nagusietako batzuk:

* **Eclipse Project**: Proiektu sortzailea, Eclipse Platform eta JDT barne hartzen ditu.
* **Business Intelligence and Reporting Tools (BIRT)**: Txostenak eta adimen analitikorako tresnak.
* **Data Tools Platform (DTP)**: Datu-base erlazionalen bistaratze eta kudeaketarako tresnak.
* **Eclipse Modeling Project**: Softwarearen modelizaziorako frameworkak (UML, EMF).
* **Tools Project**: Programazio-lengoaietarako garapen-tresnak.
* **Eclipse Web Tools Platform (WTP)**: Web-teknologietarako garapena.
* **Mylyn**: Zereginen eta lanaren testuinguruaren kudeaketa, 2006an gehitua.

### Eclipse Platform 
**Eclipse Platform** da ekosistemaren nukleoa. Java lengoaian idatzita dago nagusiki, eta SWT eta JFace liburutegi grafikoetan oinarritzen da. Plataforma honek oinarrizko azpiegitura eskaintzen du pluginak exekutatzeko eta elkarreragiteko.

Eclipse Platform honako osagai nagusiek osatzen dute:

* **Platform Runtime**: Pluginen kudeaketa eta exekuzioa.
* **SWT**: Interfaze grafikoaren oinarrizko liburutegia.
* **JFace**: SWTren gaineko maila altuagoko API grafikoa.
* **Workbench**: Erabiltzaile-interfazearen antolaketa (ikuspegiak, editoreak, perspektibak).

Osagai horiek IDE baten barruan erabil daitezke, baina baita aplikazio autonomoak sortzeko ere.

### Eclipse RCP (Rich Client Platform) 
**Eclipse RCP** Eclipse Platform-etik eratorritako framework bat da, **bezero aberastuko** (rich client) aplikazioak garatzeko. RCPk Eclipseren interfazea eta arkitektura erabiltzen ditu, baina IDE baten funtzionalitate espezifikoak baztertuta (kodearen exekuzioa, esaterako).

Eclipse RCP bidez sortutako aplikazioek:

* Eclipse estiloko interfazea dute (ikuspegiak eta perspektibak).
* Aplikazio autonomoak dira (*standalone*)
* Soilik JRE bat behar dute exekutatzeko.

### Garapen-tresnak eta lengoaiak 
Eclipse ekosistemak programazio-lengoaia ugari onartzen ditu, gehienetan pluginen bidez. Ohikoenetako batzuk hauek dira:

* Java (JDT bidez).
* C eta C++ (CDT bidez).
* Python (PyDev).
* PHP.
* JavaScript.
* COBOL.
* Ada.
* SQL eta XML.

Gainera, Eclipsek domeinu espezifikoko lengoaiak sortzeko tresnak ere eskaintzen ditu, hala nola Xtext.

### Hedapenak eta Marketplace 
Eclipseren funtzionalitatea hedatzeko, erabiltzaileek plugin katalogo handi bat dute eskuragarri **Eclipse Marketplace** plataforman. Hedapen horiek erraz instala daitezke IDEtik bertatik, eta lengoaia berriak, frameworkak edo integrazio espezifikoak eskaintzen dituzte.

### Android Development Tools eta ondorengoak 
Historikoki, **Android Development Tools** (ADT) Eclipserako plugin-multzo bat izan zen, Android aplikazioak garatzeko erabilia. ADTk Android SDKarekin integrazioa eskaintzen zuen, baina geroago **Android Studio**k ordezkatu zuen, IntelliJ IDEA-n oinarritutako IDE gisa.

Hala ere, Eclipse ekosisteman beste proiektu batzuk sortu dira Androiden inguruan, hala nola **Andmore**, ADTren komunitateak mantendutako jarraipena.

### Ekosistemaren garrantzia 
Eclipse ekosistema software librearen historian funtsezko erreferentzia bihurtu da. Enpresa handiek, ikerketa-zentroek eta garatzaile independenteek erabiltzen dute, bai tresna gisa, bai oinarri teknologiko gisa. Bere izaera irekiak, modularrak eta komunitatean oinarrituak Eclipse software-garapenaren estandar nagusietako bat bihurtu du.

## Aplikazioen bizi-zikloaren kudeaketa 
Eclipsen, Application lifecycle management (ALM) eta task management egiteko, **Mylyn** aukerazko osagaia erabil daiteke. Mylyn kode irekiko proiektua da, task-focused interface delakoaren inplementazioa eskaintzen duena, eta tresna desberdinek interfazea txertatzeko API bat ematen duena.

Garatzaileentzat, Mylynek zeregin anitzekin modu eraginkorragoan lan egitea ahalbidetzen du, hala nola akatsekin, arazo-txostenekin edo funtzionalitate berriekin. Zereginak Mylyn barruan integratzen dira, eta horietako bakoitzerako erabiltzailearen jarduera aztertzen du, uneko zereginarekin lotutako informazioa identifikatzeko. Horrela, Eclipseren erabiltzaile-interfazea dagokion informazioan zentratzen da, bilaketa, desplazamendu eta nabigazio beharra murriztuz.

Mylyn hainbat biltegi-sistemarekin integra daiteke, besteak beste Bugzilla, Trac, Redmine, Mantis , JIRA, Unfuddle  eta GitHubekin . Helburua produktibitatea handitzea da, zereginaren testuingurua esplizitu bihurtuz, eta horrela, zeregin anitzeko lana, plangintza, aurreko lanen berrerabilpena eta ezagutzaren partekatzea erraztuz.

Proiektuaren izena mielinatik dator . Hasieran, proiektuak **Mylar** izena zuen, baina marka komertzial batekin gatazka sortu zenez, Eclipse Fundazioak **Mylyn** izenera aldatu zuen .

## Hedapenak 
Eclipsek hedapen edo plugin ugari onartzen ditu, eta horien bidez hainbat teknologia eta programazio-lengoaietarako euskarri ditu eskuragarri. Besteak beste, Python garatzeko PyDev erabil daiteke; Android aplikazioak garatzeko, berriz, lehenago Googlek garatutako ADT erabili zen (2015ean Android Studio hasi zen erabiltzen); JavaFX-rako e(fx)clipse dago; eta baita JavaScript eta jQuery bezalako teknologietarako hedapenak ere, guztiak Eclipse Marketplace bidez eskuragarri.

Java konpiladoreak dakartzan ohartarazpenez gain, kodearen kalitatea eta koherentzia hobetzeko linting tresnak eskaintzen dituzten pluginak ere badaude, hala nola SpotBugs eta SonarLint.

Eraikuntza-tresnetarako euskarria ere badu Eclipsek, besteak beste Ant, Maven, Make eta CMake tresnetarako. Hedapen horiei esker, posible da Eclipseko proiektu-formatu natiboa ordezkatzea zuzenean Mavenen *pom.xml* fitxategiarekin.

## Banaketa alternatiboak 
Eclipse proiektuaren barruan hainbat banaketa eta tresna espezializatu garatu dira, plataforma oinarri bera erabiliz baina programazio-ingurune edo teknologia jakin batzuetara bideratuta.

### PHP Development Tools 
**PHP Development Tools** (PDT) proiektuak PHP (*PHP Hypertext Preprocessor*) garatzeko marko oso bat eskaintzen du Eclipse plataformarako. Proiektuak garapenerako osagai guztiak biltzen ditu, hala nola kode-osaketa automatikoa (*code completion*), PHP aplikazioen garapena eta plataformaren hedagarritasunerako tresnak. PDTk Eclipseren Web Tools Platform (WTP) eta Dynamic Languages Toolkit (DLTK) proiektuetan oinarritzen da, eta haien azpiegitura aprobetxatzen du .

### Android Development Tools 
**Android Development Tools** (ADT) Googlek garatutako Eclipserako plugin ofiziala izan zen, Android aplikazioak garatzeko ingurune integratua eskaintzen zuena. 2015ean, Googlek plugin horren garapena bertan behera utzi zuen, eta horren ondoren Eclipse Fundazioak **Andmore: Development Tools for Android** izeneko ordezko proiektua sortu zuen .

ADTk eta Andmorek Eclipse hedatzen dute Android proiektuak sortzeko, aplikazioen interfazea diseinatzeko, Android Framework APIan oinarritutako osagaiak erabiltzeko, aplikazioak arazteko eta .apk fitxategiak esportatzeko. ADT izan zen Android garapenerako IDE ofiziala 2015era arte, baina ondoren Android Studiok hartu zuen rol hori. 2024tik aurrera, Andmore proiektua ia geldirik dago, 2017az geroztik jarduerarik izan ez duelako .

## Hizkuntzak 
2008ko uztailean, honako lengoaiak zeuden Eclipse 3.2 bertsioarentzat: alemana, arabiera, txekiera, txinera sinplifikatua, txinera tradizionala, koreera, espainiera, frantsesa, hungariera, ingelesa, italiera, japoniera, poloniera, brasildar portugesa y errusiera .

Hizkuntzak gehitzen joan dira Eclipse Babel  paketearen bidez, horien artean euskara, azken eguneraketa 2023ko martxoan izanik. Gaur egun, 46 hizkuntza daude eskuragarri, baita pseudoitzulpen pack bat ere. Hizkuntzen zerrenda honakoa da: albaniera, alemana, arabiera, bulgariera, daniera, errumaniera, errusiera, eslovakiera, esloveniera, espainiera, estoniera, **euskara**, finlandiera, frantsesa, greziera, hebreera, hindiera, hungariera, indonesiera, ingeles australiarra, ingeles kanadarra, ingeles estatubatuarra, italiera, japoniera, katalana, klingon hizkuntza, koreera, kurduera, lituaniera, malaysiera, mongoliera, nederlandera, norvegiera, pertsiera, poloniera, portuges brasildarra, portuges europarra, serbiera, suediera, thailandiera, turkiera, txekiera, txinera sinplifikatua, txinera tradizionala, ukraniera eta vietnamiera.

## Erreferentziak 
## Kanpo estekak 
*  Eclipse.org home