Programowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała

Podobne dokumenty
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Podstawy frameworka Spring

Obiekty, aspekty, komponenty

OSGi Agata Hejmej

Java jako język programowania

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

AUTOMATYCZNA OCENA KOMPLETNOŚCI PROJEKTU PROGRAMISTYCZNEGO

Programowanie w języku Java WYKŁAD

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Techniki efektywnego testowania kodu dla programistów Java (Spock

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Programowanie obiektowe

Michał Stochmiałek Wprowadzenie do programowania aspektowego

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Programowanie obiektowe - 1.

Katedra Inżynierii Oprogramowania Tematy prac dyplomowych inżynierskich STUDIA NIESTACJONARNE (ZAOCZNE)

Aplikacje w środowisku Java

Tematy dyplomów inżynierskich 2009 Katedra Inżynierii Oprogramowania

Programowanie obiektowe

Klasy abstrakcyjne i interfejsy

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie kontraktowe w Javie

Podstawy języka Java. przygotował:

Platforma Eclipse: Pluginy, RCP oraz GEF

Michał Olejnik. 22 grudnia 2009

Programowanie aspektowe

Programowanie współbieżne i rozproszone

Język Java część 2 (przykładowa aplikacja)

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Systemy Rozproszone Technologia ICE

Wykład 1 Inżynieria Oprogramowania

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

Zasoby, pliki graficzne

Java Podstawy. Michał Bereta

METODY PROGRAMOWANIA

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Aplikacje RMI

Programowanie obiektowe zastosowanie języka Java SE

JBoss Application Server

Coraz więcej programistów poznaje programowanie

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Instrukcja laboratoryjna cz.3

Programowanie obiektowe. Wprowadzenie

Programowanie w Internecie. Java

Pakiety i interfejsy. Tomasz Borzyszkowski

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Web frameworks do budowy aplikacji zgodnych z J2EE

PRZEWODNIK PO PRZEDMIOCIE

Testy automatyczne. Korzystające z junit

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Informatyzacja przedsiębiorstw

Konspekt pracy inżynierskiej

Zaawansowane programowanie w języku C++

Język Java część 2 (przykładowa aplikacja)

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Tworzenie oprogramowania

Szablony funkcji i klas (templates)

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Modelowanie procesów biznesowych, przepływu pracy i wdrażanie aplikacji w oparciu o Jboss jbpm lub Activiti

Multimedia JAVA. Historia

Programowanie obiektowe

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Zaawansowane aplikacje internetowe

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Platformy Technologiczne

KARTA PRZEDMIOTU. Programowanie wieloplatformowe, D1_1

Metody dostępu do danych

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Programowanie zespołowe

Tomasz Dobek.

Programowanie w języku C++ Grażyna Koba

Podstawy Programowania 2

1 Wprowadzenie do J2EE

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016

Ćwiczenie 1. Przygotowanie środowiska JAVA

Czym są właściwości. Poprawne projektowanie klas

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Programowanie w języku Python. Grażyna Koba

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Podstawy Programowania Obiektowego

Języki i metody programowania Java. Wykład 2 (część 2)

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Transkrypt:

Programowanie aspektowe na przykładzie AspectJ

Plan prezentacji Co to programowanie aspektowe i AspectJ Szybki start z AspectJ (przykład) Uruchamianie aplikacji z aspektami Jak to działa Możliwości wplatania kodu Przykład Odpowiedzi na pytania

Programowanie aspektowe i AspectJ AOP = Aspect-oriented Programming Rozwiązywanie zagadnień wspólnych dla wielu niezależnych komponentów/modułów projektu. Przeciwieństwo innych metodyk, nastawionych na modelowanie systemu (jako moduły, komponenty). AspectJ: realizacja koncepcji programowania aspektowego dla języka Java. Prawdopodobnie najpopularniejsza

AspectJ Pojęcia Aspekt to opis miejsc przecięcia kodu (Point-cut) oraz treści jaka ma być wpleciona pomiędzy kod (Advice) Point-cut definicja miejsca przecięcia kodu Advice kod do wplecenia JoinPoint konkretne miejsca przecięć (pointcutów)

Szybki start z AspectJ (przykład) AJDT = AspectJ Development Tools Plug-in Eclipse Update site: http://download.eclipse.org/tools/ajdt/34/update

Przykładowy projekt

Tworzymy aspekt

Nasz pierszy aspekt package sample; public aspect LoggingAspect { pointcut logprogress() : call(* Worker.work(..)); } before(): logprogress() { System.out.println("progress"); }

Program z utworzonym aspektem Monitorowanie działania programu zaimplementowane z aspekcie działa!

Uruchamianie aplikacji z aspektami Kompilacja kodu z aspektami kompilator ajc Podczas uruchamiania wymagane aspectjrt.jar Uruchamianie i wplatanie aspektów w trakcie działania programu Projekt equinox-aspects Rozszerzenie Equinox OSGi

Jak to działa Kompilacja kodu z aspektami Kompilacja do Javy Przegląd generowanego bytecode Wplatanie konspektów w trakcie działania programu (Equinox-Aspects) Rozszerzenia mechanizmu ładowania klas (ClassLoaderDelegateHook)

Jak to działa: call pointcut logprogress() : call(* Worker.work(..)); before(): logprogress() { System.out.println("progress"); } }

Jak to działa: call pointcut logprogress() : execution(* Worker.work(..)); before(): logprogress() { System.out.println("progress"); }

Możliwości wplatania kodu Wywołanie metody (call/execution) Odwołanie/zmiana wartości pola (get/set) Tworzenie obiektu (call/execution/initialization/preinitialization) Tworzenie klasy (staticinitialization) Obsługa wyjątku (handler) Obsługa advice (adviceexecution)...inne

Możliwości wplatania kodu Przed / zamiast / po / po rzuceniu wyjątku / po nie rzuceniu wyjątku before around after after throwing after returning

Przykład Środowisko do testowania mutacyjnego Przecina bibliotekę JUnit, by zebrać dodatkowe dane na temat uruchamiania testów

Wykorzystane aspekty pointcut systemcallboolean() : this(junit.framework.testcase) && withincode(* test*(..)) && call(boolean *(..)); Miejsce przecięcia w każdej klasie typu junit.framework.testcase (czyli także klasy dziedziczące), wewnątrz metod o nazwie zaczynającej się na test, o dowolnych argumentach ( (..) ), zwracających dowolną wartość ( * ) w każdym odwołaniu ( call ) do dowolnej metody zwracającej wartość typu boolean.

Odpowiedzi na pytania Testowanie /miluch czyli czy jest możliwośc bez żadnej wtyczki sprawdzenia czy w danym punkcie dany advice zostanie uruchomiony... testowanie advice Używanie AspectJ do wprowadzenia policy dotyczących architektury systemu: np sprawdzanie pewnych metryk w kodzie, zarządzanie wyjątkami. /miluch

Dziękuję za uwagę Referencje AspectJ: www.eclipse.org/aspectj AJDT: http://www.eclipse.org/ajdt AspectJ Programming Guide: www.eclipse.org/aspectj/doc/released/progguide