Co si myslíte o AspectJ?

stewe

Co si myslíte o AspectJ?
« kdy: 04. 11. 2011, 11:22:29 »
Zdravim,

co si myslite o AspectJ? Realne sa to pouziva? Ja som na to narazil prednedavnom a dost ma to chytilo, je to bomba napad a technika, debuggovat s tym triedy a celkovo program je parada (mimo ineho co AspectJ ponuka).

Ak mate k tomu dake osobne postrehy, budem rad, ak sa s nimi podelite.

Pekny den
« Poslední změna: 04. 11. 2011, 11:30:01 od Petr Krčmář »


Re: Co si myslíte o AspectJ?
« Odpověď #1 kdy: 09. 11. 2011, 12:18:13 »
AspectJ je dobra vec. Otazka je, na co to pouzit ? Napada me treba security, logovani, transakce.. Jenze na implementaci techto aspectu se vetsinou pouziva nejaky framework, ktery treba je postaven na AspectJ, ale programatora od nej odstinuje. Treba co se transakci tyce, tak ve Springu se daji implementovat ciste deklarativne pomoci anotaci. Na implementaci security lze zase pouzit treba framework Spring Security. Zbyva logovani, tam uz si realne pouziti predstavit umim, ale na druhou stranu pokud programator pracuje s nejakymi frameworky pro persistenci dat, implementaci aplikacni vrstvy a prezentacni vrstvy, tak se mu o logovani starji ty frameworky.
Za zminku taky stoji alternativa k AspectJ, ktera neni tak mocna, ale zase nevyzaduje zadny plugin do JDK, protoze funguje jednoduse na principu navrhoveho vzoru proxy - Spring AOP.

Takze to by asi tak byl muj nazor, prinos AspectJ a obecne AOP je umerny tomu, jak clovek pracuje, jake frameworky pouziva apod.

Filip

Re: Co si myslíte o AspectJ?
« Odpověď #2 kdy: 09. 11. 2011, 20:47:41 »
Jak pise kolega prede mnou, AspectJ je ultimatni vec, ale v praxi se spis pouziva pomoci frameworku typu Spring. To samozrejme ale vubec nesnizuje jeho dulezitost.

Pomoci Springu je pouzivan velmi casto, prave diky anotacim - coz dela pouziti velmi prehledne

stewe

Re: Co si myslíte o AspectJ?
« Odpověď #3 kdy: 10. 11. 2011, 00:09:37 »
neznizuju tie aspecty celkovu rychlost aplikacie? pri debugovani si to viem predstavit, logy a podobne, proste "co ktora trieda kedy robi", ale produkcne aspekty su uz trochu ina kava. neviem ako to je presne implementovane ale urcite to robi nejaky ten overhead ...

KapitánRUM

Re: Co si myslíte o AspectJ?
« Odpověď #4 kdy: 10. 11. 2011, 00:21:59 »
Tož a k čemu to Bohůšu konkrétně je?


Re: Co si myslíte o AspectJ?
« Odpověď #5 kdy: 10. 11. 2011, 01:41:40 »
neznizuju tie aspecty celkovu rychlost aplikacie? pri debugovani si to viem predstavit, logy a podobne, proste "co ktora trieda kedy robi", ale produkcne aspekty su uz trochu ina kava. neviem ako to je presne implementovane ale urcite to robi nejaky ten overhead ...
Urcite ne nejak vyrazne oproti tomu, kdyby jsi to psal natvrdo do metod.

Filip

Re: Co si myslíte o AspectJ?
« Odpověď #6 kdy: 10. 11. 2011, 15:36:20 »
no AOP je obecne dobry v tom, ze opakovane veci, to zneprehlednuji kod, vyvedete "vedle kodu"

Priklad: mate metodu, ktera potrebuje pracovat v transakci - misto zdlouhaveho (a hlavne opakovaneho) Try/catch atd staci pridat jednu anotaci nad danou metodu @Transactionable s parametrem treba @Transactionable(readOnly=true)

kod je tim krasne prehledny a kazdy chape co to dela. Pri kompilaci (pripadne v runtime), se misto teto anotace vygeneruje kod, ktery zajisti transakci (tenhle kod uz nekdo udelal za vas, nebo si ho ale taky muzete udelat sami - zpracovavat vlastni anotace neni zadny problem)

no a AspectJ je jen nejaka konkretni implementace frameworku pro aspektoveho programovani

Pozitiva: citelnejsi kod, a kdyz uz mate anotace a "zpracovavac" anotaci, tak i rychlejsi vyvoj
Negativa: nejaky overhead tam asi bude, takze pouzivat to vsude je blbost, ale kdyz se to pouziva rozumne tak je to imho zanedbatelny (jinak by to nikdo nepouzival :))

Napsal jsem to hodne laicky, pokud chcete korektnejsi informace tak si o tom neco muzete nastudovat zde: http://www.aspectprogramming.com/home/aosd

Re: Co si myslíte o AspectJ?
« Odpověď #7 kdy: 10. 11. 2011, 16:11:33 »
AspectJ neni implementace frameworku pro aspektove programovani, AspectJ je spis plugin do JDK, ktery na urovni javovskeho kodu podporuje psani aspektu.
To co popisujes ohledne transakci je spise deklarativni pristup rizeni transakci, byt je to implementovano pomoci bud nejakeho AOP frameworku, nebo primo pomici AspectJ. AOP ti obecne umoznuje definovat kde, jak a kdy vykonat nejakou cast kodu (kterou sam napises jako aspekt) nad nejakou metodou, pripadne metodami. Takze tim docilis k oddeleni vykonneho kodu od omacky okolo (tomu se rika separation of concerns).

Filip

Re: Co si myslíte o AspectJ?
« Odpověď #8 kdy: 10. 11. 2011, 16:28:18 »
Dekuji za upresneni

stewe

Re: Co si myslíte o AspectJ?
« Odpověď #9 kdy: 10. 11. 2011, 17:37:05 »
mne sa na tom velmi paci jedna vec a to, ze si mozem definovat pointcut-y (volanie funkcie, vykonanie ... ) podla roznych podmienok (akoze v akom balicku to je, ake argumenty ta metoda ma, co to vracia, je mozne pouzit aj wildcards takze parada :) ) a potom ich mozem vyuzit v advice napr. after() kde uz len napisem, co sa ma spravit, ked sa tie pointcuty matchnu. takto spravim "rez" programom, na zaklade netrivialnych podmienok v behu programu vyvolam advice ktora mi nieco osetri. bez aspecj si neviem predstavit ako by sa to robilo ...

Re: Co si myslíte o AspectJ?
« Odpověď #10 kdy: 10. 11. 2011, 18:37:22 »
Ano, to je taky jedna z hlavnich vyhod AOP, vyrazne snizeni boilerplate kodu.