AOP – Aspect Oriented Programming

Slides:



Advertisements
Podobne prezentacje
Klasy i obiekty.
Advertisements

Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Copyright for librarians - a presentation of new education offer for librarians Agenda: The idea of the project Course content How to use an e-learning.
Programowanie obiektowe w Javie
Języki programowania obiektowego
Projektowanie warstwy serwera Programowanie aspektowe.
Spring podstawy.
Wstęp do kontenerów IoC
Podstawy C# Grupa .NET PO.
Integracja aplikacji Wykład 2
Robi bo musi, czy Ruby bo lubi?
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Tworzenie aplikacji mobilnych
Seminarium problemowe
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
WELCOME TO Gdańsk Culture & Sport Sport Football.
One tale one game one dance one recipe
Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.
Spring Framework, Spring Boot
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
OOP, Desing Patterns … and more Michał Dubel
CROSSWORD: SLANG. Konkurs polega na rozwiązaniu krzyżówki. CROSSWORD: SLANG Wypełnione karty odpowiedzi prosimy składać w bibliotece CJK, lub przesyłać.
Paweł Starzyk Obiektowe metody projektowania systemów
Kompetentny ekonomista i logistyk- sukces na rynku edukacyjno – zawodowym! Człowiek – najlepsza inwestycja! Projekt współfinansowany ze środków Unii Europejskiej.
Adaptive, Component Based System Architecture for Monitoring Data Storing Distributed Systems Research Group Department of Computer Science AGH-UST Cracow,
Przetłumacz podane w nawiasach fragmenty zdań na j. angielski.
Wstęp do systemów informatycznych Testowanie oprogramowania.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
Joanna Tyrowicz Skąd się bierze firma? Ekonomia instytucjonalna.
Marcin Gliński Instytut Języków Romańskich i Translatoryki UŚ Regionalny Ośrodek Doskonalenia Nauczycieli WOM w Katowicach NOCNE POWTÓRKI MATURALNE 2016.
Oferujemy sprzedaż ręcznie wytwarzanych przez nas kartek na różne okazje (mi. na Boże narodzenie, Wielkanoc itp.). Kartki wykonywane będą z powszechne.
Metody Analizy Danych Doświadczalnych Wykład 9 ”Estymacja parametryczna”
Co robisz jutro rano? This project has been funded with support from the European Commission. This document reflects the views only of the authors, and.
C PRZEWODNIK PO NAJCIEKAWSZYCH MIEJSCACH WROCŁAWIA - GUIDE TO THE MOST INTERESTING PLACES OF WROCLAW Cześć jestem Krzysztof. Dziś będę pokazywał Ci Najciekawsze.
Co Pan robi? Kim Pani jest? This project has been funded with support from the European Commission. This document reflects the views only of the authors,
Dzień dobry! Cześć! This project has been funded with support from the European Commission. This document reflects the views only of the authors, and.
Our Songs. You can love who you love Love is equal for everyone So go and open up your heart It`s easy! ”All you need is love”
Spring Framework Tomasz Dobek
Język Java Paweł Rajba
Dziedziczenie, polimorfizm, Interfejsy
Szkoła Podstawowa Nr 47 im. Jana Klemensa Branickiego w Białymstoku
Opracowanie: Katarzyna Gagan, Anna Krawczuk
introduction to tenses in English
Logo afiliacji autora Tytuł referatu (minimalna wysokość czcionki 37pkt) Imię, nazwisko i afiliacja autora/ów (minimalna wysokość czcionki 27pkt) Wprowadzenie.
Symulacja procesu BPMN
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Akademia C# lab. 9 Zdarzenia i delegaty.
Lekcja 1 – Hello World! Visual Studio, coś łatwego na początek 
Programowanie obiektowe
Kurs języka C++ – wykład 13 ( )
Managed Service Identity dla zasobów w Microsoft Azure
Running Dictation Activity to Engage Students in Reading, Writing, Listening, and Speaking.
Dobre praktyki w Django REST Framework
Dynamics 365 CE i język TypeScript
Podstawy informatyki Zygfryd Głowacz.
Programowanie obiektowe Wykład 11
Inheritance mapping from UML to C#.
Iteracyjno-rozwojowy cykl oprogramowania 2
Zdarzenia (eventy) Zdarzenia służą do powiadomienia użytkownika, gdy w używanej klasie dojdzie do pewnych wydarzeń zdefiniowanych przez twórcę klasy.
Jak szukać błędów w Eclipsie?
BYDGOSKI FESTIWAL NAUKI
PGO Dziedziczenie Michail Mokkas.
Wywołanie okienka ShapePlot poprzez hoc
dr Danuta Kajrunajtys BUSINESS PROCESS MANAGEMENT ROBOTIC PROCESS
DEFINICJA KLASYCZNA. ĆWICZENIA
Zapis prezentacji:

AOP – Aspect Oriented Programming

AOP – Aspect Oriented Programming 11/15/2018 AOP – Aspect Oriented Programming KArol Muszyński, PJWSTK 13-12-2004 HP_presentation_template

Agenda Wprowadzenie do tematu Hello World 11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.X !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

11/15/2018 Idea AOP November 15, 2018 HP_presentation_template

AOP – podstawowe pojęcia Pointcut (join point) – definiuje punkt w trakcie wykonywania programu Advice – definiuje część implementacji aspektu, która ma być wykonynana w momencie natrafienia na pointcut Aspect – jest złączeniem powyższych dwóch elementów Weaving – wplatanie aspektów w istniejący kod November 15, 2018

Punkty wplatania aspektów method execution (wykonanie metody) method call (wywołanie metody) constructor execution (wykonanie konstruktora) constructor call (wywołanie konstruktora) field access (dostęp do pola) field modification (modyfikacja pola) catch handlers (przechwycenie wyjątku) static initialization (statyczna inicjalizacja klasy) November 15, 2018

Agenda Wprowadzenie do tematu Hello World 11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.X !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

Hello World 1 – aop.xml <aspectwerkz> <system id="samples"> <aspect class="MyAspects"> <pointcut name="methodsToLog" expression="execution(* examples.TraceMe*.*(..))"/> <advice name="logMethod(StaticJoinPoint)" type="around" bind-to="methodsToLog"/> <advice name="logBefore(StaticJoinPoint)" type="before" bind-to="methodsToLog"/> <advice name="logAfter(StaticJoinPoint)" type="after" bind-to="methodsToLog"/> </aspect> </system> </aspectwerkz> November 15, 2018

Hello World 1 – klasy public class TraceMe { public static void main(String args[]) throws Throwable { TraceMe tm = new TraceMe (); tm.targetB(); tm.targetA(); } public void targetB() {} public void targetA() {} public static class MyAspects { public void logMethod(JoinPoint jp) { } public void logBefore(JoinPoint jp) { } public void logAfter(JoinPoint jp) { } November 15, 2018

Hello World 2 – klasa /* @Aspect(”perJVM”) */ public static class MyAspects { /* @Expression(”execution(* TraceMe*.*(..))”) */ Pointcut methodsPointCut; /* @Around(”methodsPointCut”) */ public void logMethod(JoinPoint jp) { } /* @Before(”methodsPointCut”) */ public void logBefore(JoinPoint jp) { } /* @AfterFinally(”methodsPointCut”) */ public void logAfter(JoinPoint jp) { } } November 15, 2018

Hello World 2 – aop.xml <aspectwerkz> <system id="samples"> <aspect class="MyAspects"/> </system> </aspectwerkz> November 15, 2018

Hello World 3 (Java 5) – aspekty @Aspect(”perJVM”) public static class MyAspects { @Expression(”execution(* TraceMe*.*(..))”) Pointcut methodsPointCut; @Around(”methodsPointCut”) public void logMethod(JoinPoint jp) { } @Before(”methodsPointCut”) public void logBefore(JoinPoint jp) { } @AfterFinally(”methodsPointCut”) public void logAfter(JoinPoint jp) { } } November 15, 2018

Agenda Wprowadzenie do tematu Hello World 11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.X !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

Implementacje AOP Aspectj 1.2 - http://eclipse.org/aspectj 11/15/2018 Implementacje AOP Aspectj 1.2 - http://eclipse.org/aspectj Jboss AOP 1.0 - http://www.jboss.org/developers/projects/kboss/aop AspectWerkz 1.0 - http://aspectwerkz.codehaus.org AspectWerkz 2.X RC 2 - http://aspectwerkz.codehaus.org November 15, 2018 HP_presentation_template

Dlaczego AspectWerkz 2.X !? Nie trzeba wkompilowywać aspektów w źródła naszej aplikacji Hot deployment and undeployment of aspects AspectWerkz Extensible Aspect Container StaticJoinPoint vs. JoinPoint New annotation backend and Java 5 annotations support November 15, 2018

Architektura November 15, 2018

Benchmark http://www.theserverside.com/articles/article.tss?l=AspectWerkzP1 Z aktualizowany benchmark http://docs.codehaus.org/display/AW/AOP+Benchmark?decorator=printable November 15, 2018

Wydajność AspectWerkz 2.x Since the weaver in AspectWerkz 2.X is compiling everything statically, meaning that the output of the weaver is code that is statically compiled and verified, spring (and any other framework) will benefit from that. Statically compiled code can be highly tuned and optimized and no reflection is needed. This means that we don't have to perform all the expensive plumbing needed in a reflective model. E.G.: No casting No boxing and unboxing of primitives No wrapping (and unwrapping) of parameters in an object array that needs to be allocated at each invocation (and maintained throughout the invocation flow) No reflective invocations November 15, 2018

Agenda Wprowadzenie do tematu Hello World 11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.0 !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

Wykorzystanie i przyszłość AOP AOP, a OOP Jeśli wydaje Ci się, że AOP jest idealnym rozwiązaniem Twojego problemu to znaczy, że źle do niego podchodzisz używając OOP Powstanie wzorców projektowych opartych na AOP SpringAOP i JBossAOP AOP jako narzędzie do debug-owania aplikacji Logowanie November 15, 2018

Linki http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect_p.html http://www.theserverside.com/articles/content/AspectWerkzP2/article.html http://radio.javaranch.com/channel/val/2004/06/01/1086086742000 http://docs.codehaus.org/display/AW/AOP+Benchmark?decorator=printable November 15, 2018