Plan prezentacji PJWSTK 2010 2 Motywacje powstania Cele projektu Podstawowe założenia Niezgodność impedancji Integracja składniowa Architektura rozwiązania.

Slides:



Advertisements
Podobne prezentacje
Konstrukcja systemów obiektowych i rozproszonych
Advertisements

Programowanie obiektowe
© K.Subieta. Obiektowe języki zapytań 08, Folia 1 kwiecień 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
Wzorce.
Rafał Hryniów Tomasz Pieciukiewicz
Generics w .NET 2.0 Łukasz Rzeszot.
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Wprowadzenie do C++ Zajęcia 2.
© K.Subieta. Konstrukcja systemów obiektowych i rozproszonych 3, Folia 1 październik 2004 Konstrukcja systemów obiektowych i rozproszonych Wykładowca:
CLR na platformie .NET Tomasz Kostarski.
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
Generyczne Repozytorium Dokumentów w XML
PySBQL Język zapytań dla obiektowych baz danych. Aplikacje bazodanowe Główny nurt budowania aplikacji opiera się na połączeniu: SQL JDBC Java Jak wyświetlić
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
Co to jest studium przypadku?
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Java – programowanie obiektowe
PHP wprowadzenie.
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
Autor: Maciej Piwowarczyk
Autor: Maciej Piwowarczyk
Podejście stosowe do obiektowych języków programowania baz danych
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.
Witold Bołt Wprowadzenie do .NET Witold Bołt
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
Automatyczne dereferencje w języku SBQL
KONSTRUKCJA KOMPILATORÓW WYKŁAD WYKŁAD Robert Plebaniak Robert Plebaniak.
Programowanie Podstawowe pojęcia.
Generator analizatorów leksykalnych
Programowanie strukturalne i obiektowe
Języki i środowiska programowania systemów rozproszonych, Wykład 06, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Technologie internetowe II
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Programowanie obiektowe – zastosowanie języka Java SE
WPROWADZENIE W ŚWIAT OBIEKTÓW
JAVA.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 07, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Projektowanie obiektowe
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 05, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Maszyna wirtualna ang. virtual machine, VM.
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Podstawy programowania
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Model obiektowy bazy danych
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Platforma .Net.
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Programowanie Zaawansowane
Podstawy programowania
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Programowanie Obiektowe – Wykład 6
(według:
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Założenia projektowe Javy
NEMERLE Michał Maliszewski.
JavaBeans by Paweł Wąsala
PGO Dziedziczenie Michail Mokkas.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

Plan prezentacji PJWSTK Motywacje powstania Cele projektu Podstawowe założenia Niezgodność impedancji Integracja składniowa Architektura rozwiązania Plany rozwoju projektu Podsumowanie

Motywacje powstania PJWSTK Większa moc języka Java Lepsza pielęgnacyjność kodu Synergia Java + język zapytań Nowe cechy SBQL „Marketing” podejścia stosowego Odpowiedź na LINQ Podstawa mocnego API do baz danych Chęć obrony mgr ;-)

Cele projektu PJWSTK Zapytania na obiektach Java Zachowanie cech SBQL Integracja składniowa Mocna kontrola typów w czasie kompilacji Kompatybilność wsteczna Możliwość wywołania metod i konstruktorów z zapytań Wydajność – tłumaczenie zapytań na kod Javy

Podstawowe problemy PJWSTK Niezgodność impedancji Składnia - różne style i budowa programów Rozwiązanie – dopasowanie składni operatorów mających odpowiedniki w języku programowania (np. ==, !=, !, &&, ||, new, instanceof) Nowe operatory (np. where, join, order by) – wartość dodana języka Systemy typów Jednolity model danych SBA – wyższy poziom abstrakcji

Niezgodność impedancji cd. PJWSTK Semantyka i paradygmaty programów – deklaratywność kontra imperatywność Zapytania jako specjalne wyrażenia (wywołanie funkcji) Generowanie funkcji realizującej zapytanie Poziomy abstrakcji – wysoki języka zapytań, niski języka programowania Integracja dwukierunkowa Generyczność operatorów – wykorzystanie standardowych interfejsów (operatory ==, porównania zakresowego, order by) Możliwość użycia metod, funkcji i konstruktorów Java

Niezgodność impedancji cd. 2 PJWSTK Przetwarzanie kolekcji Specjalne traktowanie obiektów kolekcji w języku zapytań Mapowanie java.util.Collection bag, java.util.List sequence Kolekcje generyczne w języku zapytań, np. bag Konieczne określenie typu elementow kolekcji

Zasada korespondencji PJWSTK Język zapytań – ok. 35 operatorów Java – ok. 240 nie-terminali Bezpośrednie włączenie zapytań oznacza potencjalnie ponad 8400 punktów styku Oznacza to : Trudności w rozwoju języka zapytań Konflikty dla operatorów o tej samej składni i różnej semantyce Ogólne zagmatwanie ostatecznego „tworu”

Integracja składniowa PJWSTK Rozwiązanie problemu korespondencji – rozdzielenie składni na rozłączne konteksty Integer[] n = new Integer[] {4, 2, 6, 20, 4, 23, 1, 5, 7}; List result = #{ n as i where i > 7 }; System.out.println(result); Całe zapytanie jako nowy element składniowy Minimalna ilość nowych połączeń Zapytanie jako wywołanie funkcji

Architektura rozwiązania PJWSTK Dodatkowa faza preprocesingu Kod źródłowy zapytań *.s4j Wygenerowany kod Java *.s4j *.java Skompilowany kod *.s4j *. class preprocesing kompilacja uruchomienie

Faza preprocesingu PJWSTK Zadania: Parsowanie i analiza zapytań Analiza użytych bytów Java (min. zmienne, klasy, metody) Analiza kodu Javy Translacja zapytań na kod Javy Środki: Integracja z kompilatorem Java (OpenJDK) Typechecker i sygnatury zapytań Generator kodu Java

Faza preprocesingu cd. PJWSTK Wygenerowany kod źródłowy *.java Kod źródłowy i biblioteki *.s4j*.java *.jar*.class Preprocesor SBQL4J Java Parser SBQL4J Parser Java Analyser SBQL4J Analyser Code generator

Sygnatury zapytań PJWSTK Są tworzone w trakcie analizy Zawierają informacje o wyniku zapytania lub podzapytania Liczność wyniku ([0..1] lub [0..*] dla kolekcji) Typ kolekcji wynikowej (bag, sequence) Nazwa typu Inne właściwości charakterystyczne dla danego typu sygnatury Podobnie jak obiekty w runtime, zawierają metodę nested

Przegląd sygnatur PJWSTK ValueSignature BinderSignature ClassSignature MethodSignature ConstructorSignature StructSignature PackageSignature

Kontrola błędów PJWSTK Zgłoszenia za pomocą standardowego mechanizmu kompilatora Javy W przypadku błędu zgłoszenie, wstawienie domyślnej sygnatury dla danego operatora i kontynuacja Każdy operator wymaga określonej sygnatury o odpowiednich atrybutach (np. typ wyniku, liczność) Sprawdzane są błędy zarówno w zapytaniach, jak i w kodzie Java

Translacja zapytań na kod Java PJWSTK Dostępne 4 tryby translacji: Wywołanie interpretera Generacja kodu tożsamego z interpreterem Zoptymalizowany kod interpretera bez stosu QRES Natywne operacje Java bez stosów QRES i ENVS Balansowanie między elastycznością i wydajnością

Tryb interpretera PJWSTK Klasa implementująca wzorzec Visitor Tekst zapytania parsowany w runtime programu Przekazanie parametrów z kontekstu Java na spód stosu ENVS Obiekty Java otoczone wrapperami w trakcie wykonania Niska wydajność, duża elastyczność – możliwe dynamiczne tworzenie zapytań

Generowany kod interpretera PJWSTK Zapytanie jako metoda wygenerowanej klasy Kod zapytania tożsamy z ścieżką wywołania interpretera Stosy QRES i ENVS używane w trakcie wykonania Tylko zapytania zdefiniowane przed kompilacją Brak parsowania tekstu zapytania i generowania drzewa AST podczas uruchomienia Wyższa wydajność – mniejsza elastyczność

Generowany kod interpretera bez stosu QRES PJWSTK Wyniki podzapytań jako nowe zmienne w kodzie Generowanie unikalnych nazw podzapytań Minimalna ilość koercji w trakcie wykonania

Generowany kod bez stosów QRES i ENVS PJWSTK Maksymalne wykorzystanie możliwości maszyny wirtualnej Java Zamiana nazw użytych w zapytaniu na nazwy z modelu danych Konieczna dodatkowa analiza wiązania nazw i użycia funkcji nested Największa wydajność i czytelność wygenerowanego kodu

Nowy operator order by PJWSTK Funkcja sortująca zdefiniowana zgodnie ze standardami Javy: W obiekcie sortowanym – interfejs java.lang.Comparable W obiekcie implementującym java.util.Comparator List products = getProductList(); Comparator plCollator =...; //porównywanie polskich liter List orderedProducts = #{ products order by unitsInStock desc; productName asc using plCollator };

Generyczne kolekcje PJWSTK Rozdzielenie interfejsu (bag, sequence) od implementacji Specjalizacja kolekcji bez zmian w semantyce języka List products = getProductList(); Collection orderedProducts = #{ bag (products.productName) };

Plany rozwoju projektu PJWSTK Uniwersalne API do baz danych i innych źródeł danych Wariant translacji zapytań SBQL4J na natywne zapytania / operacje uzyskania danych Wariant podzapytań niezależnych składniowo „Smart parsing” Podział na konteksty wewnątrz zapytania Możliwość rozszerzenia semantyki języka przez dodanie biblioteki Większe możliwość integracji DBLink warehouseDBLink =...; List result = #{ warehouseDBLink.((cusomers rollby segment).name) }; System.out.println(result);

Plany rozwoju projektu cd. PJWSTK Optymalizacja zapytań przez przepisywanie Zintegrowane środowisko programistyczne (IDE) dla SBQL4J Zapytania ad-hoc i kontrola typologiczna w czasie wykonania

Podsumowanie PJWSTK Mocny język zapytań oparty na SBQL, zintegrowany z Javą Przełamanie niezgodności impedancji Niskie ryzyko użycia w istniejących projektach Szerokie możliwości rozwoju

Dziękuję za uwagę PJWSTK