Probabiliter,
In hoc articulo, qui in natura prospectus est, conabimur inspicere quaedam fundamenta eclipsis architecturae sicut suggestum aedificationis instrumentorum evolutionis integratae et dandam ideam initialem elementorum Eclipsis quae fundamentum technologiarum formant. suggestum "novi Configuratoris" 1C: Inceptum.
Introductio ad Architecturam Eclipse
Inspice rationes aliquas generales Eclipsis architecturae utentis exemplo
Ante omnia notandum est Eclipsim insignitam esse satis claram stratis architecturae, cum separatio functionis linguae independentis a functionalitate destinata ad certas programmationis linguas sustentandas, ac separationem partium UI-independentium "core" a componentibus adiunctis. supporting user interface.
Sic, Eclipsis Platform definit infrastructuram communem, lingua-independentem, et instrumenta evolutionis Javae ad Java IDE plenam plumam ad Eclipsin addunt. Ambo Eclipsis Platform et JDT pluribus componentibus constant, quarum unaquaeque vel UI-independens nucleum vel UI iacum pertinet (Figura 1).
Renatus. 1. Eclipse Platform et JDT
Praecipua partes Eclipsis rostris enumerare:
- runtime β Plugin infrastructure definit. Eclipsis modularis architecturae propria est. Essentialiter, Eclipsis est collectio "extensio punctorum" et "extensiones".
- workspace - Procurat vel incepta. Proiectum constat ex folders et fasciculis quae directe ad tabella ratio proscriptae sunt.
- Latin Widget Toolkit (SWT) - Praebet elementa usoris fundamentalis interfaciei integrata cum systemate operante.
- JFace β Praebet numerum UI compagum super SWT constructum.
- opificinae suae β Eclipsis III paradigma definit: editores, opiniones, prospectus.
Dicendum est eclipsis rostris etiam multa alia utilia praebere componentibus instrumenta evolutionis integratae, inclusa Debug, Compare, Quaerere, et Team. Peculiaris mentio fiat de JFace Texto - fundamentum aedificationis "doloris editores" fontis Codicis. Dolendum est, etiam cursim examinatio harum partium, sicut UI iacuitarum partium, intra ambitum huius articuli non fieri potest, ideo in reliquo huius sectionis inspectione praecipuarum partium "core" nos circumscribere debebimus. Eclipse rostris atque JDT.
Core Runtime
Eclipsis plugin infrastructure innititur
Core Workspace
Fere omnis evolutionis integralis ambitus super eclipsis Platform laborat cum eclipsis workspace aedificatur. Workspace est quod plerumque continet fontem codicis applicationis in IDE elaboratae. Workspace maps directe ad systema fasciculi et ex inceptis constat quae folder et lima continent. Haec consilia, folder, lima dicuntur opibus workspace. Exsecutio operis in Eclipse pro cella in relatione ad tabellam systematis inservit, quae efficit ut signanter accelerare possit traversationem arboris resource. Praeterea workspace praebet aliquot officia additamenta, quos possidet
Core Resources componentes (org.eclipse.core.resources plugin) responsabilis est ad opera spatii eiusque facultates sustentandas. Praesertim haec pars programma praebet accessum ad operis spatium in forma resource exempla. Ad hoc exemplum efficaciter operandum clientes simplici modo opus habent ut nexum subsidii exhibeat. In hoc casu, optabile esset ut obiectum celare, quod directe statum subsidii in exemplari cliente accessu reponit. Alioquin in casu, exempli gratia, lima delendo, cliens obiectum quod non amplius in exemplari, cum subsequentibus problematibus tenere posset. Eclipse solvit hanc quaestionem per quod dicitur capulus eopia. Palpate agit ut clavis (solum enim novit viam ad subsidii in workspace) et omnino regat aditum ad exemplar objectum internum, quod informationes de statu subsidii directe reponit. Hoc consilium variatio exemplaris
Renatus. Figura 2 manubrium illustrat / idioma corporis applicatum ad exemplar resource. IResource interfaciei manubrium repraesentet subsidii et est API, dissimilis classis Resource, quae hanc interfaciem efficit, et genus ResourceInfo, quod corpus repraesentat, quae non APIs sunt. Commonentes tractamus solum viam novit subsidii ad radicem workspace relativam et nexum info resource non continet. Resource info obiecta formant sic dictum "elementum arboris". Haec notitia compages omnino materiata est in memoria. Ad instantia info resource respondentem manubrio invenire, elementum arboris secundum viam in manubrii repositam percurritur.
Renatus. 2. IResource et ResourceInfo
Ut postea videbimus, principale consilium exemplar ope- rii (ut eam tractatum fundatum appellamus) in Eclipsibus adhibitum est etiam aliis exemplaribus. Nunc enim nonnullas proprietates huius consilii distinctivas enumerare;
- Manubrium est obiectum pretii. Res valores sunt res immutabiles, quarum aequalitas in identitate non fundatur. Haec objecta tuto adhiberi possunt ut clavis in vasis abjectis. Plures instantiae manubrii ad eandem resource possunt referri. Eos comparare, debes methodo uti pares (Object).
- Palpate mores subsidii definit, sed informationes de statu subsidii non continet (sola notitia quae reponit "clavis" est, iter ad residium).
- Palpate referri potest ad subsidium non existentis (vel opum nondum creatum, vel subsidium iam deletum). Exsistentia subsidii coerceri potest methodo IResource.exists() utendi.
- Nonnullae operationes perfici possunt in sola notitiarum rerum in ipso manubrio (sic dictae operationes solum manubrii). Exempla sunt IResource.getParent(), getFullPath(), etc. Subsidium non indiget ut tali operationi succedat. Operationes quae subsidio indigent ut exstent ut succedant CoreException mittent si auxilium non exsistit.
Eclipsis praebet mechanismum efficientem ad notificationem workspace mutationes resource (Figura III). Facultates variari possunt vel propter actiones intra ipsam IDE eclipsim factorum vel propter synchronizationem cum tabella systematis. In utroque casu, clientes notificationes subscribentes praebentur accuratioribus informationibus de mutationibus in forma "resource deltas". Delta describit mutationes inter duos status subsidii fabricae (sub-) arboris et ipsa est arbor, quarum unaquaeque nodi mutationem subsidii describit et continet indicem deltas in gradu proximo qui mutationes pueri facultatum describit.
Renatus. 3. IResourceChangeEvent et IResourceDelta
Notificatio mechanismi in subsidiis deitas fundata has notas habet:
- Una mutatio et multae mutationes eadem structura utentes describuntur, quoniam della compositionis recursivae principio utens aedificatur. Subscriptores clientes possunt processus resource notificationes mutare utentes descensus recursivus per lignum deitatis.
- Delta integram informationem continet de mutationibus subsidii, incluso eius motu vel/vel mutationibus in "markis" cum eo associatis (exempli gratia, errorum compilation ut venalicium repraesentantur).
- Cum subsidia spectantia per manubrium fiunt, della natura subsidia remotam referat.
Ut mox videbimus, principales partes consilii subsidii exemplar mutationis notificationis mechanismum pertinentes sunt etiam ad alia exempla ansa substructio.
JDT Core
Eclipsis workspace resource exemplar fundamentale exemplar linguae-agnosticae est. JDT Core componente (plugin org.eclipse.jdt.core) praebet API ad navigandum et dividendum structuram fabricam ex prospectu Javae, quod "Java exemplar" dicitur (Java exemplum). Hoc API terminis Javae elementorum definitur, ut exemplar resource API subjectae opponitur, quod in terminis folder et lima definitur. Interfaces praecipuae elementi arboris Javae in Fig. 4.
Renatus. 4. Java Exemplar Elementorum
Exemplar Javae eadem manubrio/corporis idiomatis utitur ut exemplar resource (Figura 5). IJavaElement manubrium est, et JavaElementInfo corpus agit. IJavaElement interfacies definit protocollum omnibus elementis Javae commune. Quaedam methodi eius tractant solum: getElementName(), getParent(), etc. JavaElementInfo objectum statum elementi respondentis: eius structuram et attributa reponit.
Renatus. 5. IJavaElement et JavaElementInfo
Exemplar Javae nonnullas differentias habet in exsequenda manubrii fundamentalis/corporis designati comparati ad exemplar resource. Ut supra dictum est, in exemplari ope resource, elementum ligni, cuius nodi sunt res infoe, memoria prorsus continetur. Exemplar autem Javae potest signanter maiorem numerum elementorum habere quam lignum resource, quod etiam repraesentat structuram internam .java et .classum imaginum: genera, agros et modos.
Ad vitandum omnino materiationem totius arboris elementorum in memoria, exemplar Javae exsequendi magnitudinem LRU cache elementi info limitatam adhibet, ubi clavis IJavaElement tractatur. elementi info obiecti creantur in demanda sicut elementum ligni navigatur. In hoc casu, minima frequentius usus e cella ejiciuntur, et memoria exemplaris consummatio manet limitata ad magnitudinem cache definitam. Haec alia utilitas in consilio manubrio substructio, quae talem exsecutionem singula e codice clientis omnino celat.
Mechanismus ad mutationes Javae elementorum notificandas generatim est similis mechanismo ad mutationes investigationis ad facultates workspace de quibus supra. Cliens monitorem mutare volens exemplar Javae in notificationibus subscribet, quae tamquam ElementChangedEvent obiecti repraesentantur quae IJavaElementDelta continet (Figura 6).
Renatus. 6. ElementChangedEvent et IJavaElementDelta
Exemplar Javae informationes de methodo corporum vel solutionis nominis non continet, ut ad accuratiorem analysin codicis in Java scripta, JDT Core exemplar adiectum (non-substructum) exemplar praebet;
Quia syntaxis arborum notabilem quantitatem memoriae consumere possunt, JDT cache unum tantum AST pro editore activo. Dissimilis exemplar Javae, AST typice spectatur exemplar "medium" "temporarium" cuius membra a clientibus extra contextum operationis quae ad creationem AST ducendam non sunt habendae sunt.
Exemplaria tria recensita (exemplari Javae, AST, ligaturae) fundamentum constituunt ad structuram "instrumentorum progressionem intelligentium" in JDT, incluso validissimo editore Javae cum variis "auxiliis", variis actionibus pro codice fonte dispensando (including elenchum import nomina et formare secundum stilum nativus), instrumenta quaerere et reficere. In hoc casu, exemplar Javae munus speciale agit, quia ut basis repraesentationis structurae applicationis in crescendo adhibetur (exempli gratia in Sarcina Explorer, Outline, Investigatio, Voca Hierarchia, ac Typus Hierarchiae).
Eclipsis components in 1C:Intraprise Progressiones Tools
In Fig. Figura 7 demonstrat Eclipsis components quae fundamentum technologiarum suggestum pro 1C:Inceptio Development Instrumentis constituunt.
Renatus. 7. Eclipse ut suggestum 1C: Enterprise Development Tools
Eclipse Platform basic infrastructure praebet. Nonnullas huius infrastructuris rationes in praecedenti sectione inspeximus.
Sicut quodlibet instrumentum vere generale propositum, EMF idoneum est ad solvendum amplis quaestionibus exemplaribus, sed nonnulla genera exemplorum (exempli gratia manubrii substructio exempla supra tractata) specialiora exempla quaerenda sunt instrumenta. De EMF sermo ingratus est, praesertim intra limites unius articuli, cum hoc de libro separato agitur, et de uno crassiore agitur. Solum notemus quod summus qualitas systematis generalium generalium quae EMF subiacent permiserunt nativitatem totius ambitus inceptis ad exemplaribus dicatis, quae in summo gradu comprehenduntur.
1C:Inceptio Development Instrumenta active et EMF ipsa et pluribus aliis inceptis Eclipsis Modelingis utuntur. Praesertim Xtext una e fundamentis instrumentorum evolutionis pro talibus 1C:Inceptis linguis ut aedificatis in programmandi lingua et lingua quaerenda. Aliud fundamentum harum instrumentorum evolutionis est Eclipsis Handly delineatio, de qua fusius disseremus (de componentibus Eclipsibus recensitis, adhuc minus notum est).
Principia architecturae fundamentalia speciminum manubriorum subnixi, sicut idioma corporis manubrii, supra tractata sunt utentes exemplar opum et exemplar Javae pro exemplis. Etiam notandum est tam exemplar opum quam exemplar Javae fundamenta momenti esse ad instrumenta progressionis Eclipsis Java (JDT). Et cum fere omnes *DT Eclipsis incepta architecturae JDT similem habeant, non erit magna exaggeratio dicere quae multa subsunt exempla manubrii fundata, nisi omnes IDEs super Eclipse Platform structas. Exempli gratia, Eclipsis C/C++ Development Tooling (CDT) manubrium fundatum habet exemplar C/C++ quod idem munus agit in architectura CDT ac exemplar Javae in JDT.
Ante Handly, Eclipsis bibliothecas specializatas non obtulit ad exempla linguae manubrio fundatae. Exempla, quae nunc sunt, maxime creata sunt per exemplar codicis Javae directe accommodando (aka copy/paste); in casibus ubi permittit Eclipse Publica Licentiatus (EPL). (Scilicet haec plerumque non est legalis quaestio, quia, inquam, Eclipsis se intendit, sed non ad fontem clausum productorum.) Praeter casuum insitum, haec ars notas difficultates inducit: codice duplicatione introducta cum erroribus accommodandis; etc. Id peius est quod exempla resultantia "res in se" manent et potentiale ad unitatem non utantur. Sed notiones communes et protocolla remotionis ad exempla linguarum tractativarum induci potuerunt ad creationem partium reusable ad operandum cum illis, simile quod factum est in casu EMF.
Non est quod Eclipse has res non intellexerit. Back in 2005
Quodam modo, consilium Handly destinatur ad solvendum circa easdem difficultates ac EMF, sed ad exempla tractandarum fundatorum et imprimis linguarum (i.e., elementa structurae alicuius linguae programmantis repraesentantis). Praecipua proposita sunt cum designando Handly infra enumerantur:
- Identification of the main abstractions of the subject of area.
- Conatum reducere et amplificare qualitatem exsequendi manubrii innixa exempla linguarum per codicem reuse.
- Unum meta-gradum API praebens ad exempla inde resultans, efficere potest ut communes IDE partes quae operantur cum exemplaribus linguae ansatimoniis fundatis, creare possit.
- Flexibilitas et scalabilitas.
- Integration with Xtext (in iacuit separato).
Ad exaggerandam notiones communes et protocolla, exsistentes exsistentes exempla ansarum linguarum substructio exempla enucleata sunt. Praecipuae interfaces et exsecutiones fundamentales provisum a Handly monstrantur in Fig. VIII.
Renatus. 8. Communes interfaces et elementa manufactae elementorum
IElement interfaciei manubrium elementi repraesentat et commune est elementis omnium exemplorum hand- fundatorum. Classis abstracta elementum manubrii/corpus mechanismum generativum instrumentat (Fig. 9).
Renatus. 9. IElement et manubrium / body implementation
Praeterea Handly praebet mechanismum generalem notificandi de mutationibus in exemplaribus elementorum (fig. 10). Ut videre potes, late similis est notificationi machinae quae in exemplar opum et exemplar Javae implentur, et IElementDelta utitur ad repraesentationem mutationis elementi unicam informationem praebendam.
Renatus. 10. Communes interfaces et fundamentales exsecutiones notificationis mechanismi manuducti
Partim manu tractata supra (fig. 9 et 10) adhiberi potest ad exempla quaevis fere manubrio fundata repraesentanda. Nam creando linguae exempla, exertus additiciorum functionis - in specie, communibus instrumentis ac fundamentalibus exsecutionibus pro elementis principii textus structurae, quae sic dictae sunt, praebet. fons elementis (Fig. 8). Interfacies ISourceFile fons documenti repraesentat, et ISourceConstruct elementum intra fasciculi fontem repraesentat. Classes abstractae SourceFile et SourceConstruct efficiendi mechanismi generatim ad operandum subsidia fontium imaginum et earum elementorum, exempli gratia, operando cum texti buffers, ligantes coordinatas elementi in fonte texto, exempla conciliandi cum hodierna contenta exemplaris opificii quiddam , etc. Has mechanisms exsequentes plerumque omnino provocatio est, et insigniter potest reducere conatum enucleandi exempla ansa linguae fundatae, dum GENEROSUS bases exsecutiones praebent.
Praeter nucleum mechanismos supra recensitos, Handly praebet infrastructuram pro textibus buffers et snapshots, subsidia integrationis cum fonte codicis editorum (including integrationem ex-of-thecam cum Xtext editore), necnon quaedam communia UI quae componuntur. opus cum source codice editoribus. Handly exempla ut forma compage. Ad illustrandas suas facultates, consilium plura exempla praebet, inter quas exemplar Javae in Handly exsequendum est. (Comparatur ad plenam exsecutionem exemplaris Javae in JDT, hoc exemplar est intentione aliquantulum simplicior ad maiorem dilucidationem.)
Ut supra dictum est, maior focus in consilio initiali Handly et subsequenti evolutionis fuit ac pergit in scalability et flexibilitate.
In principio, specimina manubrio substructio bene scande "per consilium". Exempli causa, idiomatum manubrium/corporis moles memoriae exemplar absumit te finire. Sed etiam nuances sunt. Ita, cum probe pro scalability temptat, quaestio inventa est in exsequenda notificationis mechanismo - cum numerus elementorum mutatus est, deitas construendi nimium tempus sumpsit. Evenit ut idem problema in JDT Java exemplar adesset, ex quo codice respondente olim adaptatus est. Cimem in Handly constituimus et simile commissura JDT paravimus, quod grato animo accepimus. Hoc solum unum exemplum est, ubi exemplum exsistentiae Handly introducens exsecutiones potentialiter utiles esse potuit, quia in hoc casu talis cimex uno tantum loco figi potuit.
Ut exsequatur Handly in exsistentibus exemplaribus exsecutiones technice factibiles, bibliotheca debet habere flexibilitatem significantem. Praecipua quaestio est per exemplar API retrorsum convenientiam ponere. Hoc problema solvendum est
Flexibilitas alias quoque rationes habet. Exempli gratia, Manubrium nullas fere restrictiones in exemplaris structura imponit ac adhiberi potest ad linguas generales-propositas et regiones speciales. Cum structuram fontis fasciculi construens, Handly praescribet quamlibet AST repraesentationis formam et, in principio, ne AST praesentiam requirat, ita convenientiam cum quavis fere mechanismo procurans. Denique plenariam integrationem cum fabrica Eclipseos sustinet, sed etiam operari potest directe cum systemata fasciculi ob integrationem suam cum
Current version
Ut supra dictum est, unum ex his fructibus 1C:Inceptivum Instrumenti Development, ubi Handly ab initio ad exemplar elementorum structurae altae talium 1C:Inceptivum linguarum exemplar adhibitum est ut constructum in programmatione linguae et linguae interrogationis. . Alius productus minus notus publico est. Hoc
Speramus nos post emissionem versionis 1.0 cum cautione API stabilitatis et consilii relicto incubationis statu, Handly novos adoptatores habebimus. Interea consilium pergit probare et ulterius API emendare, duos "majores" solvo per annum - mense Iunio (idem diem cum Eclipsis simultanea emissio) et Decembri, praebens praedictam cedulam quae adoptatores inniti possunt. Possumus etiam addere quod project's "bug rate" constanter maneret in plano humili et Handly fideliter laboratum est in proventibus adoptatorum veterum cum primis versionibus. Ad Eclipsim ulterius explorandum Handly, uti potes
Source: www.habr.com