PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.

Slides:



Advertisements
Podobne prezentacje
Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Advertisements

Programowanie Wizualne WYKŁAD 5
Java Enterprise Ed. vs Spring Framework
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Generics w .NET 2.0 Łukasz Rzeszot.
OLAP budowa aplikacji analitycznych w MS SQL 2000 i Yukon
Sposoby implementacji asocjacji
Implementacja ekstensji klasy
Marcin Pamuła Mateusz Stefek
Model – View - Controler
Tworzenie ASP.NET Web Form
Data powstania: 2001 rok Autor i lider: Gavin King Najnowsza wersja: Licencja: Open Source.
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Obiektowe metody projektowania systemów Command Pattern.
Standardy tworzenia dokumentów [Michał Kuciapski ]
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Enteprise Java Beans Emil Wcisło.
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Java – programowanie obiektowe
Projektowanie warstwy serwera Programowanie aspektowe.
Spring podstawy.
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
przygotował Michał Wdaniec
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Rozwój aplikacji przy wykorzystaniu ASP.NET
Architektura Systemu MunSOL
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Technologie tworzenia aplikacji internetowych Wykład 3
Generatory dokumentacji kodu źródłowego
Inż. Łukasz Antoniak Promotor: dr inż. Piotr Gawrysiak Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, 2010.
Programowanie strukturalne i obiektowe
Tworzenie aplikacji mobilnych
Programowanie obiektowe – zastosowanie języka Java SE
Wykonał: Michał Nikołajuk
Implementacja systemu
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Systemy zarządzania treścią Wykład 5
OCPJP Inner classes.
Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
Spring Framework, Spring Boot
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Technologie programowania systemów internetowych
Prom Pisanie pluginów Maciej Sobkowiak & Tomek Ciesielczyk.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Elementy programowania funkcyjnego w Javie 8. Pragmatyczny przegląd. (c) Krzysztof Barteczko 2014.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Windows Workflow Foundation. WF został wydany wraz z NET Framework 3.0 w 2006 r., a następnie zaktualizowany w NET Framework 3.5. Te dwie pierwsze wersje.
Eclipse jako środowisko IDE do programowania w Javie Java IDE Bartosz.Michalik
Programowanie Obiektowe – Wykład 6
(według:
AOP – Aspect Oriented Programming
Dynamics 365 CE i język TypeScript
Programowanie obiektowe – zastosowanie języka Java SE
Założenia projektowe Javy
PGO Dziedziczenie Michail Mokkas.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar

Plan Czym jest? Czym nie jest? Geneza i potrzeba Kod źródłowy Programowanie aspektowe Baza danych: Prevayler PAT

Czym jest? Platforma (framework), ale lekka Ułatwia zapisywanie danych –Obiektowa Przyśpiesza tworzenie aplikacji Konieczna dodatkowa biblioteka Zmiana procesu kompilacji (Ant) Konieczny RAM

Czym nie jest? Nie pozwoli udostępnić danych bazy danych na zewnątrz (RDBMS) Nie ma ładnych narzędzi do podglądu danych Nie wspiera 2PC Rollback (ver. 1) GUI tworzymy samemu Nie będzie SQL

Geneza i potrzeba 2003: Pi –Problem z RDBMS –Prevayler Nadal pisanie kodu 2004: AOP –Programowanie aspektowe –Powstanie PAT 2005: Ax –Pierwsze wdrożenie

Geneza i potrzeba Ewolucja i elastyczność –Łatwe testy Prostota –Przejrzysta warstwa danych, POJO –Ładny kod; refaktoryzacja Wydajność –Szybkość przeszukiwania danych

Kod źródłowy

Przykładowa klasa Forum realizująca jakąś logikę biznesową –Nowa wiadomość –Wyszukiwanie wiadomości

public class Forum { public Forum() { }

public class Forum { private List messages; public Forum() { }

public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); }

public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); } public void newMessage(String message) { messages.add(new Message(message)); }

public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); } public void newMessage(String message) { messages.add(new Message(message)); } public String findMessageContaining(String substring) { for (Message message: messages.iterator()) if (message.matches(substring)) return message; }

@pat.bo public class Forum { private List messages; public Forum() { this.messages = new ArrayList(); public void newMessage(String message) { messages.add(new Message(message)); } public String findMessageContaining(String substring) { for (Message message: messages.iterator()) if (message.matches(substring)) return message; }

Programowanie aspektowe

Magia Uzupełnia programowanie obiektowe Polepsza modularyzację Rozdziela zagadnienia Ala triggery, lecz odnośnie kodu Javy

Core + usługi (aspekty) Forum Users Topics persistence asynchronous invocation remoting etc..

Core + usługi (aspekty) Forum Users Topics persistence asynchronous invocation remoting etc..

Aspekt: tracing To także usługa –Przeplata wiele miejsc w kodzie –Jest ortogonalna do logiki biznesowej –Może być, lub nie być –Może być różnie zaimplementowana

Aspekt: tracing public ActionForward execute(...) { log.debug(„Starting loading data..”); List items = ItemsDao.loadAllItems(); //.... }

Aspekt: tracing public ActionForward execute(...) { List items = ItemsDao.loadAllItems(); //.... }

Aspekt? Jednostka, która definiuje: –coAspect.trace() –kiedyexecution –gdzie * ma być uruchomione

Aspekty W takim razie kilka przykładów aspektów....

Aspekt: toString() * -> toString(); public String toString() { return ToStringBuilder.reflectionToString( this, ToStringStyle.MULTI_LINE_STYLE ); }

Aspekt: onLoad(); dependency Public class Car { private Garage garage; } Aspect.init(Object o) { o.garage = Globals.PUBLIC_GARAGE; }

Aspekt: autoryzacja Dostęp do metod klasy, atrybutów,... Nie zmieniamy kodów źródłowych Można w przyszłości wymienić system autoryzacji

Kto używa aspektów Spring JBoss AS Aplikacje użytkowe

Prevayler

Baza danych W pamięci RAM Logi transakcji na dysku twardym Szybka Prosta do obsłużenia Dla Javy ma jeden problem: kod transakcji

PAT

Na początku miał tylko uprościć Prevayler Okazał się platformą do szybkiego tworzenia aplikacji: –Aplikacje biznesowe –Szybkie prototypowanie Może działać razem z Tomcat, Struts, Ajax, Swing, Java5,...

PAT: Jak? pat-base-?.jar @pat.root Kompilacja: statyczna, dynamiczna (Ant)

PAT: Klasy biznesowe Forum.java –Metody –Atrybuty

PAT: Metody biznesowe Metody: –Biznesowe, uaktualniające dane Mają „przetrwać” –Przeszukujące dane Mają być szybkie

PAT: Adnotacje Klasa Metoda

PAT: Wymóg korzenia

PAT: Pobieranie danych Zwykła iteracja / Nawigowanie –Java5 XPath JoSQL

PAT: Zapisywanie danych na metodach –Aspekt, refleksja, podmiana PersistableAspect.takeSnapshot() –Raz co jakiś czas

Kiedy wykorzystywać Prototypowanie Elastyczność Prostota...

Prototypowanie public... execute(.... { List myListA = world.getEmployees(); List myListB = EmployeesDao.findAll(); List myListC = JDBCTemplate.findAll(); List myListD = SQL.execute(„SELECT * FROM...”) }

PAT: Zbiór aspektów RootCreation BusinessObjectCreation TopBusinessObjectCreation CommandInterceptor Identifiable PersistableAspect...

Co dalej po PAT? Zbiór aspektów: –Stringable –Struts (NotNull, Tracer) Prails –Generowanie całych aplikacji Wejście: Klasy biznesowe Wyjście: Gotowa aplikacja webowa

Czym jest? Platforma (framework), ale lekka Ułatwia zapisywanie danych Przyśpiesza tworzenie aplikacji Konieczna dodatkowa biblioteka Zmiana procesu kompilacji (Ant) Konieczny RAM Czym nie jest?

Dziękuję Pokaz praktyczny?