Pierwsza edycja Eclipse Demo Camp we Wrocławiu zakończona sukcesem!

Pierwsza wrocławska edycja Eclipse Demo Camp już za nami!

Bez wątpienia udało nam się osiągnąć sukces. Zaplanowaną maksymalną liczbę 30 uczestników przekroczyliśmy już po pierwszym dniu od rozpoczęcia rejestracji w systemie Oiola. Strona rejestracyjna pojawiła się we wtorek nocą a w środę już musieliśmy ją zablokować z obawy o ilość miejsc :)

Czas na podziękowania :) Myślę że całość nie byłaby możliwa bez wsparcia Jacka Pospychały oraz Grześka Dudy. Pomogli mi oni między innymi zorganizować odpowiednią reklamę tej imprezy bez której prawdopodobnie nikt by się o niej nie dowiedział. Łukasza Milewskiego oraz ponownie Jacka którzy zdecydowali się poświęcić czas wolny i przyjechać do Wrocławia by opowiedzieć wam o Eclipse. Oraz oczywiście wszystkim osobom z Sygnity które pomogły mi w sprawach logistycznych, oraz zorganizowały finansowanie całości. A jak wyglądało samo spotkanie?

Wystartowaliśmy z małym opóźnieniem ok. godziny 11.20. Pierwszy był Łukasz który zaprezentował jak wykorzystać platformę Eclipse RCP jako podstawę dla własnej aplikacji desktopowej. Później przerwa na dyskusję (oraz oczywiście zjedzenie kanapek z... łososiem!). Po przerwie Jacek pokazał jak aplikację RCP przekształcić do postaci aplikacji webowej przy użyciu technologii Eclipse RAP (praktycznie bez zmian w kodzie - copy&paste). Spotkanie zakończyło się moim wykładem o Eclipse Modeling i DSL. Podobnie jak wcześniej w Krakowie postarałem się zrobić szybki przekrój przez całą rodzinę projektów na bazie której budujemy DSL'e (EMF/GMF/xTEXT/ANTLR etc).

W trakcie prezentacji staraliśmy się robić demonstracje. Mam nadzieję że się one podobały (nawet jeżeli nie zawsze wszystko się udawało). Zdjęcia z imprezy można znaleźć pod tym adresem: http://picasaweb.google.pl/deepdiveinto/EclipseDemoCamp2008WrocAw


Myślę że nie będzie to ostatnia eclipsowa impreza we Wrocławiu.

Osobiście mam także nadzieję że udało mi się przekonać część z was do idei tworzenia języków opisu problemu. To wcale nie tak odległa przyszłość jak by się mogło wydawać. Myślę że kolejna rewolucja jest tuż za rogiem a dowodem na to jest premiera języka 'M' (o którym napiszę następnym razem). Jak się do tych zmian przygotować? Myślę że najlepszym rozwiązaniem będzie wyjazd na CodeGeneration 2009 (mam nadzieję że w tym roku mi się uda :)

Wstęp do DSL

Po przeczytaniu komentarza Jacka Laskowskiego na temat sposobów popularyzacji zadadnień tworzenia narzędzi eclipsowych, koncepcji MDD (Model Driven Development) czy DSM/DSL (Domain Specific Modeling) postanowiłem coś zrobić w tym temacie. Myślę że dobrym początkiem może być prosty tutorial.

Co jednak zaprezentować by jednocześnie wytłumaczyć podstawy zagadnienia a przy okazji wzbudzić zainteresowanie tematem? Jedno jest pewne - nie może to być generacja pustych interfejsów :) W internecie można znaleźć setki prostych kursów jak wygenerować schemat klas, bazy danych z modelu etc. Nuda. Postanowiłem pokazać coś innego, co moim zdaniem pozwoli lepiej reprezentować powyższe koncepcje. Zamiast modelować kod strukturalny stwórzmy kod logiki. Naszym zadaniem będzie utworzenie miniaturowego systemu który biznesowy opis (reguły rozsyłania wiadomości) przekształci w działający kod.

Wymagania dla zadania wyglądają następująco. Musimy utworzyć narzędzie pracujące na poziomie problemu (biznesowy opis zachowania) które będzie potrafiło generować coś zrozumiałego dla maszyny (kod wykonywalny). Czy to możliwe? Zobaczymy...

Jako platformę docelową wybrałem prosty silnik świadczący usługę rozsyłania wiadomości pomiędzy nazwanymi kolekcjami (taki uproszczony wzorzec rozsyłania wiadomości z EAI). Nasz silnik oczekuje jako swojej konfiguracji klas reprezentujących zasady działania (interfejs IRule). Reguły te modelowane będą za pomocą edytora pracującego według zasad opisanych poprzez pewien model (meta-model). Żeby nie komplikować wykorzystamy dynamiczny edytor Ecore. Nie jest to oczywiście rozwiązanie produkcyjne jednak na potrzeby prostego tutoriala wystarczy. Osoby zainteresowane tematem budowy własnych edytorów DSL odsyłam do swojej prezentacji z EclipseCamp 2008 (trzeba jakoś reklamować swojego bloga).

Przykładowy meta-model naszego języka zawiera zaledwie dwie proste reguły:
- skopiuj wszystko z kolekcji źródłowej do kolekcji docelowej
- rozbij kolekcję źródłową na podzbiory na podstawie wartości parametru.



Jak widać model nie jest zbyt zaawansowany. Fragment opisujący wyrażenie można nazwać co najwyżej "edukacyjnym", całość pozbawiona jest też nadrzędnego kontekstu. Podział oraz integracja modeli to temat złożony, wykraczający poza ramy tego kursu. Myślę jednak że na nasze potrzeby prosty meta-model w zupełności wystarczy.

Korzystając z edytora dynamicznego (opcja "Create Dynamic Instance") tworzymy dwie proste reguły:
- pobierz listę z kolekcji 'src' do kolekcji 'dst'
- pobierz listę klientów z kolekcji 'customers' i dorosłych umieść na 'adults', dzieci na 'children', nieprawidłowe elementy na 'unknown'



W trybie tekstowym utworzona instancja modelu powinna wyglądać następująco:



Ostatni krok to utworzenie szablonu generacji kodu. Nie jest to trudne. Kod który zostanie wygenerowany musi wykonywać operacje opisane przez meta-model. Utworzona instancja zawiera przykładowe wartości parametrów których użyjemy podczas testów. W naszym przypadku musimy zaimplementować prosty interfejs reguły (IRule) naszego silnika.



Pisanie szablonu rozpoczynamy od utworzenia testów. Ważne jest by nie starały się one weryfikować formatowania generowanego kodu ale logikę jego wykonania. Kod ten wielokrotnie może ulegać zmianom (optymalizacja etc.) jednak kontrakt z pozostałymi elementami systemu powinien być zachowany. W związku z tym w testach opisujemy tylko zasady interakcji z otoczeniem (nie tworzymy implementacji silnika etc.) Przykładowy test wygląda następująco:



Tworzenie testów pomaga nam lepiej zrozumieć problem jaki staramy się rozwiązać. Są one także niezmiernie pomocne w tropieniu literówek etc. Mając testy oraz przykładową instancję modelu bez trudu tworzymy prosty szablon kodu.



Testy zadziałały - zadanie zakończone ;D

Bardziej szczegółowe informacje znaleźć można na stronach www.eclipse.org/modeling. Jeżeli temat kogoś zainteresował fajnie byłoby gdyby dodał jakiś komentarz, będę wiedział czy warto go kontynuować (polecam także tutorial z AST jako wstęp do zagadnienie budowy notacji tekstowej dla modeli).

Eclipse DemoCamps 2008 - podsumowanie

Pod koniec czerwca odbyły się dwa spotkania fanów środowiska Eclipse z cyklu EclipseCamp 2008. Szczęśliwie udało mi się uczestniczyć w obu dzięki czemu miałem unikalną okazję zamienić kilka słów z innymi osobami zainteresowanymi rozwojem produktów bazowanych na Eclipse.

Szczególne brawa należą się moim zdaniem organizatorom tych spotkań:
  • Jackowi Pospychale (Poznań)
  • Kasi Bylec (Poznań)
  • Grzegorzowi Dudzie (Kraków)
  • Szymonowi Brandysowi (Kraków)
Mam nadzieję że następnym razem uda mi się zorganizować z ich pomocą edycję wrocławską. Wszystko jednak zależy od zainteresowania tematem.

A tak to wszystko wyglądało (miniatury wskazują na galerie zdjęć):

Poznań:Kraków:


Kilka wybranych prezentacji:
  • Szymon Brandys, Tomasz Żarna
    Razem w Eclipse (Together in Eclipse) - wszystko co powinien wiedzieć programista starający się zaangażować w prace nad środowiskiem Eclipse

    ABC of Platform Workspace - tej prezentacji niestety nie było jednak można było wypytać jej autorów o szczegóły zagadnień



  • Mateusz Matela, Aleksandra Woźniak, Marek Zawirski
    GSoC project - prezentacja projektów uczestniczących w tegorocznym Google Summer of Code



  • Grzegorz Białek - uwaga kryptoreklama ;)
    DSL w środowisku Eclipse (DSL in Eclipse) - modelowanie procesów biznesowych z wykorzystaniem języków wysokiego poziomu... cokolwiek to znaczy ;)



Pozostałe prezentacje znajdują się (lub zostaną z czasem uzupełnione) na stronach poszczególnych imprez. Zapraszam!

Eclipse DemoCamps 2008 - Kraków

W najbliższą sobotę tj. 28.06.2008 w Krakowie w klubie RE odbędzie się Eclipse DemoCamp 2008.

Jeżeli jesteś zainteresowany platformą Eclipse, chciałbyś poznać inne osoby związane z tym tematem to jest to wydarzenie którego nie możesz opuścić ;D

  • 12.30 – 12.50 Wprowadzenie do Ganymede
    Grzegorz Duda, Sabre Polska, Polish Java User Group leader

  • 12.50 - 13.10 Mylyn - Eclipse zorientowany na zadania
    Grzegorz Duda, Sabre Polska, Polish Java User Group leader

  • 13.20 – 14.00 Wprowadzenie do BIRT
    Krzysztof Daniel, Eclipse enthusiast, engineer in Eclipse Support Center at Politechnika Poznanska

  • 14.10 – 14.50 DSL w srodowisku Eclipse
    Grzegorz Bialek, Sygnity

  • 15.00 – 15.40 Razem w Eclipse
    Szymon Brandys, Eclipse Platform committer, engineer in IBM Poland

  • 15.40 – 16.00 Q&A



Inne przydatne linki:
Rejestracja
Polish Java User Group
Eclipse DemoCamps 2008 - Kraków

Eclipse DemoCamps 2008 - Poznań

Właśnie wróciłem z Poznania, naprawdę piękne miasto i bardzo dobre jedzenie. Polecam!
Myślę że dobrą okazją do odwiedzin może być pewna impreza która odbędzie się już za kilka dni...

Eclipse DemoCamps 2008 - Poznań

DSLs: Martin Fowler, Marcus Völter

Przez ostatnie dwa miesiące nie miałem zbyt dużo czasu na prowadzenie bloga. Powinienem to jakoś naprawić... tym razem jednak znów pójdę na łatwiznę i wykorzystam "gotowca" ;)

Wczoraj udało mi się odnaleźć kolejny wywiad na temat DSL'i. Tym razem oprócz Markusa współuczestniczy w nim żywa legenda jaką jest niewątpliwie Martin Fowler. Myślę że nie trzeba go nikomu przedstawiać, podobnie jak książek które napisał lub promował swoim nazwiskiem a które stały się fundamentem dla wielu rewelacyjnych projektów (PoEAA -> Hibernate, EIP Hoppe/Woolf -> Apache Camel etc.)

Wideo to może być dobrym uzupełnieniem poprzedniego które zamieściłem w jednym z wcześniejszych postów. Pomimo że jest to dosyć krótka rozmowa poruszonych jest kilka ciekawych aspektów (integracja wielu języków w spójne IDE, xtext/antlr etc.). Polecam każdemu kto ma trochę wolnego czasu.

Wywiad przeprowadzony został podczas JAOO Conference i udostępnia do servis Blip.TV:

Eclipse DemoCamps 2008

Za kilka dni w Poznaniu oraz w Krakowie odbędą się spotkania pasjonatów środowiska Eclipse. Myślę, że może być to unikalna okazja do poznania osób zainteresowanych tematem budowy narzędzi.

Niestety spotkanie w Poznaniu jest w ciągu tygodnia więc raczej nie uda mi się wykorzystać okazji. Jednak nie wszystko stracone, kolega z zaprzyjaźnionego zespołu będzie tam jednym z prezenterów (Mariusz Paszkiewicz - Business Process Modeling Tool based on Eclipse Platform). Na spotkanie w Krakowie muszę się jednak wybrać. Wstyd się przyznać ale odkąd przeprowadziłem się do Wrocławia nie miałem zbyt wielu okazji by odwiedzić Kraków. Myślę że Eclipse DemoCamp jest dobrym pretekstem by to zmienić. Mam nadzieję że uda mi się wyskoczyć na browara ze starymi znajomymi a może też poznać nowych ;D

Eclipse DemoCamps 2008 - Poznań
Eclipse DemoCamps 2008 - Kraków

Eclipse Regional Communities - Poland

Eclipse Modeling jako DSL Toolkit

Kilkanaście minut temu zakończyła się wirtualna konferencja (Webinar) prezentująca projekt Eclipse Modeling jako środowisko do tworzenia DSL'i - Eclipse Modeling Project as a DSL Toolkit

W pierwszej części prezentacji Richard Gronback (prowadzący projekt GMF) opisuje w kilku słowach większość projektów składowych, druga jest jednak sporym zaskoczeniem. Zamiast klasycznej demonstracji EMF/GMF jest ona praktycznie w całości poświęcona koncepcji transformacji modeli z naciskiem na QVT. Do tej pory myślałem że biblioteki M2M są dopiero we wczesnych testach, wygląda jednak że się myliłem.

Czas chyba bliżej zainteresować się tematem no i w końcu nauczyć OCL'a ;D

Equinox Portal

Na stronach serwisu Eclipse.org wystartował dziś oficjalnie portal poświęcony wykorzystaniu technologii OSGi po stronie serwera - Equinox Portal. W jednym miejscu gromadzi on wszystkie informacje wymagane do rozpoczęcia przygody z tą technologią. Polecam!

DSL na OOPSLA 2007

W ostatnim poście wspomniałem o jednym z liderów podejścia MDSD którym niewątpliwie jest Markus Völter. Pomyślałem że warto bliżej przedstawić jego osobę, idee etc. przeszukałem więc internet i znalazłem w miarę nowy wywiad na temat DSL'i przeprowadzony podczas tegorocznej edycji konferencji OOPSLA (2007).

Markus w kilka minut przedstawia czym jest DSL oraz zarysowuje zalety oraz trudności związane z tym podejściem, wspomina także o różnicach w wymaganiach stawianych językowi w zależności od docelowego klienta (developer, analityk). Co bardzo mnie ucieszyło w wywiadzie znaleźć można także potwierdzenie moich odczuć na temat zastosowania UML'a jako nośnika opisu procesu biznesowego o którym wspominałem w jednym z wcześniejszych postów (złożoność etc.)

Wywiad zamieścił serwis DomainDrivenDesign.org, poniżej link do prezentacji:

Architektura jako język...

W poprzednim poście zrobiłem taki "mały" wstęp do DSL w kontekście MDD (Model Driven Development). Jak pisałem temat w ciągu ostatnich 2-3 lat rozwija się naprawdę wyjątkowo dynamicznie na co dowód odnalazłem już następnego dnia (choć zapomniałem napisać).

Na łamach serwisu InfoQ pojawił się bardzo ciekawy artykuł autorstwa Markusa Völtera pod tytułem 'Architektura jako język'. Markus przedstawia w prosty i opisowy sposób zastosowanie DSL'a w podejściu AC-MDSD. Biorąc pod uwagę nazwisko autora myślę że nie muszę nikomu lektury dłużej reklamować ;D

Architecture as Language: A story

DSL IDE czyli MDD w środowisku Eclipse

Postanowiłem napisać kilka słów o czymś czemu poświęciłem ostatnich kilka lat mojego życia czyli o językach DSL (Domain Specific Language - języki ukierunkowane na biznes). Ponieważ temat jest dosyć rozległy ograniczę się tylko do wprowadzenia mam jednak nadzieję że to wystarczy by kogoś nim zainteresować.

Głównym celem inżynierii oprogramowania jest przeniesienie pewnych wymagań stawianych przez biznes do postaci zrozumiałej przez maszyny. Nie jest to zadanie proste ponieważ język opisu problemów biznesowych jest zupełnie odmienny od języka używanego przez procesory, infrastrukturę sieciową etc. Zlecenia typu 'w tym momencie powinien pojawić się formularz A' lub 'podłącz Jana Kowalskiego do sieci' są zupełnie niezrozumiałe. Od wielu lat wprowadzone są więc kolejne etapy podniesienia poziomu abstrakcji języka rozumianego przez system uruchomieniowy. Powszechnym dzisiaj rozwiązaniem jest wielostopniowa kompilacja języków ogólnego zastosowania (Java, C# czy C++) a każdego dnia pojawiają się kolejne języki, warstwy kompilacji, interpretatory etc. Praktycznie każdą interakcję z systemem operacyjnym, infrastrukturą sieciową, serwerem aplikacyjnym, frameworkiem czy biblioteką użytkową możemy opisać serią reguł na bazie których możemy utworzyć kolejny język. Patrząc w ten sposób zauważamy że pisząc najprostsze pliki konfiguracyjne w rzeczywistości posługujemy się językiem zdefiniowanym przez daną bibliotekę.

Bardzo szybko zauważono możliwość dalszej abstrakcji algorytmów, potrzebny był jednak język wysokiego poziomu. W 2001 roku organizacja OMG zaproponowała podejście projektowe nazwane MDA. Zakładało ono użycie UML jako języka definicji problemu biznesowego a następnie przekształcenie tak powstałego modelu do postaci definiowanej przez platformę docelową. Użycie UML'a okazało się jednak wyjątkowo trudne w praktyce ponieważ notacja ta projektowana była w latach 90-tych z myślą o statycznej dokumentacji nie jako fragment kodu źródłowego. Narzędzia dostępne w tamtym okresie nie wyglądały wcale lepiej (profile zaimplementowano znacznie później).

Sam najlepiej przekonałem się o tym budując swój pierwszy system modelowania procesów biznesowych w którym zdecydowałem się użyć koncepcję wykonywalnego UML'a (xUML). Pomimo niewątpliwego uproszenia tworzenia/modyfikacji procesów podejście to praktycznie od razu ujawniło wszystkie swoje wady. Brak wsparcia w trakcie modelowania logiki wyższego poziomu niż dostarczana przez język UML, brak możliwości odwzorowania dodatkowych walidacji bezpośrednio w edytorze etc. Może nie wygląda to na poważne problemy jednak daje porządnie w kość już przy kilkudziesięciu złożonych procesach a przy kilkuset staje się prawdziwym piekłem.

Na szczęście w tym samym czasie (początek 2004r) IBM opublikował rewelacyjna książka 'Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework' prezentująca technikę budowania specjalizowanych edytorów graficznych w środowisku Eclipse. Przyznam że koncepcja ta całkowicie mnie pochłonęła i w kolejnej wersji systemu mogłem zrezygnować całkowicie z UML'a pozbywając się związanych z tym podejściem problemów. Dzięki budowie własnych narzędzi (DSL IDE) mogłem zapewnić nie tylko walidację w tle ale także wsparcie w tworzeniu wyrażeń a nawet dosyć zaawansowane opcje analityczne. Umożliwiło to wystarczające uproszczenie obsługi by pomoc programisty nie była już konieczna w trakcie składania nowych procesów.

Wspomniana książka okazała się jednak znacznie większym sukcesem niż mogłem to sobie wtedy wyobrazić. Nie tylko wyjaśniła każdemu jak poprawnie i szybko budować edytory graficzne ale także stała się podstawą do dalszej standaryzacji i rozwoju MDD w środowisku Eclipse. Na bazie jej wytycznych powstał wkrótce projekt Merlin Generator który stał się podstawą biblioteki GMF debiutującej w release Callisto (2006r). Tworzenie prostych diagramów zamiast tygodni skróciło się do kilku godzin/dni co oczywiście spowodowało dalszą popularyzację tematu MDD. W ubiegłym roku wydzielona została specjalna kategoria poświęcona zagadnieniu modelowania 'Eclipse modeling'. W jej ramach znajdują sie projekty odpowiedzialne za budowę struktury (EMF, EMFT), tworzenie notacji graficznych (GEF, GMF), notacji tekstowych TMF (xText, IMP), transformacji modeli M2M (ATL, QTV) oraz generatorów M2T (Xpand/Xtend, stary JET).

Jest tego naprawdę dużo i pomimo że poświeciłem tematowi DSL blisko pięć lat a powyższych bibliotek używam na co dzień od czterech przyznam że wciąż trudno mi to wszystko opanować. Praktycznie co kilka dni pojawiają się ciekawe prace lub projekty. O części z nich postaram się tutaj czasami wspomnieć...

AST - Faza druga (sytuacje błędne)

Znalazłem dziś chwilę czasu którą postanowiłem poświęcić na wznowienie budowy mojego pierwszego edytora tekstowego.

Do utworzenia wstępnego szkicu gramatyki posłużyłem się specyfikacją pierwszej wersji języka xpath którą możesz znaleźć tutaj. Jednak gramatyka utworzona w ten sposób nie jest wystarczająca by zastosować ją jako serce edytora tekstowego. Dlaczego? Ponieważ buduje ona poprawne AST tylko dla poprawnego źródła, te jednak w naszym przypadku przez większość czasu zawiera błędy. W trakcie edycji niejednokrotnie następowałaby utrata struktury AST wymaganej do synchronizacji modelu wewnętrznego. Bez modelu natomiast nie bylibyśmy w stanie oznaczyć powstałych błędów, utworzyć listy podpowiedzi etc. Poniżej postaram się zaprezentować opisaną sytuację wraz z przykładową korektą gramatyki.

Do testu posłuży nam proste wyrażenie:

doc("Elementy")//elementA/elementB/elementC



Jak widać drzewo AST jest łatwe do dalszej analizy. Co wydarzy się jednak gdy użytkownik postanowi dodać predykat wybierający instancje 'elementA' spełniające określony warunek? Sprawdźmy jak wygląda sytuacja po dodaniu pierwszego znaku '[' (modyfikacja zaznaczona kolorem).

doc("Elementy")//elementA[/elementB/elementC



Jak widać parser całkowicie się pogubił, całość utrudniła możliwość wystąpienia podwyrażenia absolutnego w ramach predykatu. W wyniku tego w poszukiwaniu nawiasu zamykającego parser zjada nam resztę wyrażenia. W tym momencie zmuszeni bylibyśmy zaznaczyć połowę tekstu jako błędną co nie wyglądałoby zbyt estetycznie nie wspominając o braku podpowiedzi etc. Spróbujmy wybrnąć z tej sytuacji inaczej.

Ponieważ w samej gramatyce nie bardzo jesteśmy w stanie ocenić w jakim miejscu powinien znaleźć się nawias zamykający, zastosujemy mechanizm auto edycji (IAutoEditStrategy) który dołoży go zaraz za wstawianym przez użytkownika nawiasem otwierającym. Podobne działanie można zobaczyć w wielu edytorach w środowisku Eclipse. Poniżej możemy zobaczyć wynikowe wyrażenie wraz z odpowiadającym AST (modyfikacja zaznaczona kolorem).

doc("Elementy")//elementA[]/elementB/elementC



Na drzewie ponownie możemy zobaczyć utracone wcześniej elementy jednak całość jest nadal bezużyteczna. Powodem jest brak obsługi pustych predykatów w naszej gramatyce które nie są poprawnymi elementami wyrażenia. Ponieważ jednocześnie chcemy by nasz parser potrafił sytuację obsłużyć poprawnie oraz oznaczyć miejsce błędu zastosujemy wirtualny token 'ERR_EMPTY_PREDICATE_TOKEN' (modyfikacja zaznaczona kolorem).

predicate
     : '[' expr ']' -> ^(PREDICATE_TOKEN expr)//;
     | '[' ']' -> ^(PREDICATE_TOKEN ERR_EMPTY_PREDICATE_TOKEN);


Poniżej zobaczyć możemy wynikowe drzewo AST:



Jak widać pierwsza sytuacja błędna została opanowana. Pozostało 99 kolejnych którymi będę musiał się zająć gdy znów znajdę czas wolny. Pozdrowienia.

AST - Faza pierwsza

Jako egzemplarz testowy wybrałem sobie dość złożone zapytanie zawierające przekrój przez mechanizmy wyrażenia selekcji języka xpath:

doc("customers")[@name = 'g.bialek']//account[parent::type = 'personal']/@id

Zawiera ono następujące elementy:
- oczywiście ścieżkę z kilkoma krokami
- wywołanie funkcji dostępu do danych
- predykaty (prosty i z wyrażeniem relatywnym)
- osie (dziecko, dziecko zagnieżdżone, ojciec, parametr)

Poniżej widok na AST:

Platforma Swordfish

Dziś na wielu serwisach informacyjnych pojawiła się zapowiedź technologii która może stać sie krokiem milowym w rozpowszechnieniu OSGi jako platformy dla aplikacji biznesowych.

Mowa o platformie Swordfish która właśnie rozpoczyna swój żywot jako produkt open-source kontrolowany przez firmę SOPERA. Co to za projekt? Jest to platforma uruchomieniowa budowana zgodnie z modelem OSGi na bazie Equinoxa której zadaniem jest połączenie cech JBI oraz SCA. Nie wgłębiałem się na razie zbytnio w temat jednak po rozmowie z jednym z ich architektów podczas Eclipse Summit Europe - głosuję obiema rękami na 'TAK'. I to wcale nie z powodu jaskrawo zielonego plecaka który dostałem, po prostu moim zdaniem to krok do przodu i to w wyjątkowo dobrym kierunku ;D