Mozilla jako platforma aplikacji

Podobne dokumenty
Zarządzanie globalną historią w przeglądarce opartej na Mozilli

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

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

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

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

Programowanie współbieżne i rozproszone

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

OpenLaszlo. OpenLaszlo

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

Analiza i projektowanie aplikacji Java

Programowanie Zespołowe

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

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

Konspekt pracy inżynierskiej

System zarządzający grami programistycznymi Meridius

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

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

egroupware czy phpgroupware jest też mniej stabilny.

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

Programowanie Komponentowe WebAPI

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Web frameworks do budowy aplikacji zgodnych z J2EE

Projekt: Mikro zaprogramowane na sukces!

Środowiska i platformy programistyczne

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

1. CZYM JEST SERIALIZACJA

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i

PyPy's Approach to Virtual Machine Construction

Wykład 6 Dziedziczenie cd., pliki

Programowanie obiektowe. Wprowadzenie

REFERAT O PRACY DYPLOMOWEJ

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

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

Programowanie obiektowe

REFERAT PRACY DYPLOMOWEJ

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

EXSO-CORE - specyfikacja

WPROWADZENIE DO JĘZYKA JAVA

SZKOLENIE TWORZENIE SYSTEMÓW

Historia modeli programowania

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Tworzenie raportów XML Publisher przy użyciu Data Templates

III Edycja ITPro 16 maja 2011

UML w Visual Studio. Michał Ciećwierz

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Tworzenie oprogramowania

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Tomasz Grześ. Systemy zarządzania treścią, cz. II

OBC01/TOPMOB Projektowanie w języku Objective-C

PRZYJĘTE ZASADY GRY...3 ZAŁOŻENIA PROJEKTU...4 CZYM JEST I DLACZEGO QT?...5 DIAGRAM KLAS...7 DIAGRAM GRY SINGLE PLAYER...8 DIAGRAM MULTIPLAYERA...

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Podstawy programowania. Wprowadzenie

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Komunikacja i wymiana danych

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

Google Android. Opracował Maciej Ciurlik

Oracle Application Express -

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Android tworzenie aplikacji mobilnych

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Szczegółowy opis zamówienia:

Bazy danych i strony WWW

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

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Struktury systemów operacyjnych

Podstawy programowania wykład

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Domain-specific Languages. Języki dziedzinowe. Adam Robaszyński-Janiec

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

XML i nowoczesne technologie zarządzania treścią

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Wypożyczalnia VIDEO. Technologie obiektowe

ZSBD ćwiczenie 4. Obiektowe systemy zarządzania bazą danych. Przygotowanie środowiska pracy. Wymagania: ZSBD ćwiczenie 4

Narzędzia RAD (wykład 1)

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

OfficeObjects e-forms

Aplikacje Internetowe

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Nauczanie na odległość

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

Java jako język programowania

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

Dodatkowo, w przypadku modułu dotyczącego integracji z systemami partnerów, Wykonawca będzie przeprowadzał testy integracyjne.

Transkrypt:

Mozilla jako platforma aplikacji Paweł Hryczuk 11 maja 2006

Plan prezentacji Wprowadzenie historia Mozilli czym jest Mozilla Architektura składniki platformy technologie platformy Zastosowania i porównania rodzaje zastosowań porównanie z innymi platformami Moduł WebMemo omówienie pokaz na żywo

Początki Mozilli Konkurencja Netscape Navigatora z NCSA Mosaic Mozilla pochodzi od Mosaic killer początkowo nazwa kodowa Navigatora i maskotka w firmie Netscape Microsoft po nieudanej próbie przejęcia Navigatora wykupuje Mosaica Tzw. browser wars między Netscape a Microsoft walka o kontrolę nad standardami sieciowymi

Narodziny Mozilli 23 lutego 1998 Firma Netscape zrzeka się praw autorskich do kodu Navigatora nigdy wcześniej duża firma nie zdecydowała się na taki krok powodem była rosnąca przewaga rynkowa Microsoftu Powstaje Mozilla Foundation nadzorująca rozwój projektu o już oficjalnej nazwie Mozilla Mozilla stopniowo uniezależnia się od Netscape a rozwój społeczności programistów udział nowych sponsorów

Ewolucja Ewolucja Mozilli od przeglądarki przez zestaw aplikacji sieciowych do platformy programistycznej Nadal sponsorowana przez Netscape Aktualne wersje Mozilla 1.8 Firefoks 1.5 Dzisiaj jeden z największych na świecie projektów open-source

Czym jest Mozilla Zestawem aplikacji sieciowych Mozilla Application Suite (Seamonkey) Przeglądarką internetową Firefoks Organizacją i społecznością internetową Mozilla Foundation Platformą aplikacji Mozilla Application Framework

Projekty mozilla.org Firefoks Thunderbird SeaMonkey (Mozilla Application Suite) Sunbird (Calendar) Narzędzia dla programistów Bugzilla Tinderbox Bonsai

Ideologia Firefoks browser wars are back Mozilla Technology Evangelism The Book of Mozilla URL: about:mozilla

Architektura

Składniki Mozilli Obsługa interfejsu użytkownika Interpreter Gecko Biblioteka sieciowa Necko Komponenty XPCOM Obsługa Web Services Mechanizm instalacyjny XPInstall

Gecko Oddzielony od pozostałych części Mozilli Niewielki a w pełni funkcjonalny jako przeglądarka Bardzo dobra obsługa standardów W3C restrykcyjny dla programisty, pobłażliwy dla użytkownika Strategia Mark III układ strony powstaje dynamicznie w trakcie ładowania dokumentu przewidywanie dotąd nie otrzymanych znaczników informacja kontrolna RDF usuwanie i dodawanie fragmentów strony nawet po załadowaniu dokumentu

Mozilla platformą aplikacji In computer programming, an application framework is a term usually used to refer to a set of libraries or classes that are used to implement the standard structure of an application for a specific operating system. By bundling a large amount of reusable code into a framework, much time is saved for the developer, since he/she is saved the task of rewriting large amounts of standard code for each new application that is developed. from wikipedia Cechy charakterystyczne Mozilli wieloplatformowość elastyczność specjalizacja w zastosowaniach sieciowych otwarte standardy i specyfikacje W3C open-source i licencja MPL/GPL ciekawe rozwiązania te cechy platformy przenoszą się na aplikacje

Kod źródłowy Większy dwa razy od jądra linuksa Wielkości kodu GNOME 2.0 łącznie z jego 150 standardowymi aplikacjami Ponad 1000 interfejsów i ponad 1000 klas Napisany głównie w C++ pewna część w JavaScript Bardzo ładny i czytelny

Diagram warstwowy XPFE Cross-Platform Front End Warstwa pośrednia XPConnect XPBE Cross-Platform Back End

Przegląd technologii XUL CSS DTD Interfejs użytkownika JavaScript XBL Technologie niskopoziomowe XPCOM XPIDL RDF XPConnect XULRunner XPInstall

XUL XML User Interface Language Deklaratywny język do opisu interfejsu użytkownika bardzo duża elastyczność oddzielenie od logiki brak konieczności kompilacji prosta struktura i przejrzystość Określa kontrolki z atrybutami, strukturę i układ (layout) XUL Templates kontrolki z dynamicznymi danymi

XUL c.d. Przestrzeń nazw XUL http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul Interfejs Mozilli jest napisany w XUL Gdzie jest granica między XUL a HTML? chrome://browser/content

CSS Cascading Style Sheets CSS służy do opisywania prezentacji dokumentów XML W Mozilli CSS określa wygląd kontrolek stylizowanie aplikacji Tematy i skórki (themes & skins) wygląd interfejsu niezależny od struktury proste dodawanie i zmienianie tematów Zgodne ze specyfikacją W3C ok. 200 specyficznych własności

DTD Document Type Definition Sprawdzanie poprawności dokumentów XML również rozwijanie encji rekomendacja W3C W Mozilli służy do lokalizowania aplikacji encje używane w XUL rozwijane do napisów w zależności od aktualnego języka Tłumaczenie jest proste technicznie i nie wymaga znajomości programowania

JavaScript Jeden z najczęściej używanych języków skryptowych odniósł ogromny sukces w programowaniu WWW W Mozilli służy do obsługi interfejsu użytkownika zagnieżdżanie w XUL identyczne jak w HTML instalowanie funkcji obsługi zdarzeń Wywoływanie metod komponentów XPCOM Realizowanie części funkcjonalności często wygodniejszy od C++ na przykład browser.js ma ponad 6000 linii kodu

JavaScript c.d. JavaScript łączy interfejs z logiką poprzez wywołania XPConnect

XBL XML Binding Language Określa sposób działania kontrolek interfejsu rozszerzanie funkcjonalności interfejsu modyfikacja metod i atrybutów kontrolek metody implementowane jako wstawki JavaScript Wysokopoziomowy język obiektowy dziedziczenie, agregacja, interfejsy, itd. zgodny z XML Dodawanie powiązań (bindings) a nie kontrolek nowe elementy opierają się na istniejących prosta implementacja, ale ograniczone możliwości

Przykład powiązania

Programowanie komponentowe Umożliwia zarządzanie nawet bardzo dużym kodem źródłowym niezależna kompilacja komponentów niezależność od języka programowania niezależne testy jednostkowe Oddzielenie interfejsu od implementacji wywołujący nie wie kto implementuje dany interfejs, ani gdzie się znajduje Przywiązanie do zastosowanej platformy

XPCOM Cross-Platform Component Object Model Platforma Mozilla podzielona na współpracujące, ale niezależne komponenty komunikacja przez interfejsy Dynamiczne ładowanie żądanych modułów ogromna oszczędność pamięci szybki start platformy Zarządzanie rejestrem załadowanych modułów odpowiadanie na zapytania typu Czy komponent X implementuje interfejs Y?

Wywoływanie XPCOM Moduł biblioteka dynamiczna jeden albo wiele komponentów Komponent jest usługą udostępniającą metody określone w interfejsie sam może też być klientem

XPCOM metoda NSGetModule() dynamiczne ładowanie komponentu nsimodule rejestracja komponentu dostęp do implementującej klasy nsifactory obiekty są tworzone przez fabryki dostępne jako metody interfejsu

XPCOM Glue Zbiór różnych narzędzi programistycznych to nie są komponenty Biblioteki operacje na ciągach znaków (nsistring) inteligentne wskaźniki (smart pointers) Makra wiele rodzajów asercji Przyczyna charakterystycznego wyglądu kodu Mozilli

XPIDL Cross-Platform Interface Definition Language Pochodzi od CORBA IDL niewielkie różnice techniczne nieznacznie zmodyfikowany kompilator Specyfikowanie interfejsów niezależny od platformy współpracuje z wieloma językami programowania Kompilacja do biblioteki typów szkieletu C++ dokumentacji HTML Część interfejsów oznaczona jako frozen

RDF Resource Description Framework RDF formułowanie zdań o strukturze podmiot predykat obiekt definiowanie słownictwa rekomendacja W3C W Mozilli spełnia podwójną rolę grafowy model opisywania zasobów internetowych i ich wzajemnych relacji np. hierarchiczne drzewo zakładek mechanizm serializacji przesyłanie danych przez sieć aplikacje rozproszone

Źródła danych (datasources) Główne zastosowanie RDF Bardzo abstrakcyjny i elastyczny model reprezentowania informacji stosowany również dla tabelkowych danych Trzy rodzaje przechowywane w pamięci serializowane i zapisywane na dysku złożone Reprezentowane za pomocą wzorców XUL jako drzewa, tabeli, menu

XPConnect Cross-Platform Connect Niewielka warstwa pośrednia między XPFE a XPBE Wykorzystywanie komponentów XPCOM w innych językach JavaScript Python Java Perl (w trakcie przygotowywania) Same komponenty mogą być pisane w C++ oraz JavaScript

XULRunner Zamienia zbiór bibliotek w platformę aplikacji instalacja, aktualizacja i deinstalacja aplikacji w systemie operacyjnym początkowe ładowanie platformy runtime package Programiści niezależnych aplikacji w ten sposób uruchamiają je razem z platformą Wiele aplikacji na jednej platformie

XPInstall Cross-Platform Install Mechanizm rozszerzania aplikacji Określa budowę pakietu strukturę katalogów format pliku z informacją o pakiecie (manifest) archiwum w formacie zip Zainstalowany kod otrzymuje pełne uprawnienia podpisy cyfrowe przy instalacji rozszerzeń

On-line Alternatywa dla instalowania aplikacji lokalnie strony WWW napisane w języku XUL dużo większe możliwości niż w HTML Bardzo ograniczone uprawnienia Przykład: gry http://games.mozdev.org

Rola języka XML Wspólny dla wielu technologii XUL, HTML, XBL, RDF, SVG, RSS, MathML Nadaje elastyczność tym technologiom Open-Closed Principle dowolne kodowanie znaków Wszystkie korzystają z tych samych komponentów do parsowania XML Dokumenty reprezentowane zgodnie ze standardem DOM

Zastosowania i porównania

Zagnieżdżanie Gecko Najczęstsze zastosowanie Mozilli Zagnieżdżanie interpretera Gecko wystarczy znajomość API niewielka integracja z platformą przykłady: K-Meleon, Epiphany

Zagnieżdżanie Gecko przykład

Rozszerzenia Pisanie rozszerzeń tematy i skórki tłumaczenia modyfikowanie działania interfejsu wystarczy JavaScript nowa funkcjonalność programowanie komponentów C++ Niewielkie wymagania pamięciowe Linkowanie z XPCOM Glue Integracja z istniejącym interfejsem XUL Overlays

Niezależne aplikacje Bardzo duże możliwości Szybkie tworzenie prototypowych interfejsów Niekoniecznie aplikacje sieciowe np. Sunbird Projekty komercyjne Crocodile Clips ActiveState Komodo

Mozilla vs. DHTML W pewnym sensie każda przeglądarka jest platformą aplikacji Mozilla jest rozwinięciem tego pomysłu Podstawowa różnica HTML: stworzony do hypertekstu XUL: specjalnie zaprojektowany dla UI Pozostałe składniki wspólne Dlatego Mozilla bardzo dobrze nadaje się do tworzenia wizualnych i iteraktywnych aplikacji

Mozilla vs..net Mozilla XPCOM C++ JavaScript Gecko Necko XUL RDF COM.NET C# JScript.NET Avalon Indigo XAML XML Schema Główna różnica polega na dostępności kodu źródłowego i rozszerzalności

Mozilla vs. Java Mozilla aplikacje sieciowe komunikacja przez XML Wiele języków programowania i standardów słaba wielowątkowość Java uniwersalne aplikacje urządzenia przenośne komunikacja przez byte-code bardzo dobra wielowątkowość, narzędzia i dokumentacja

Aplikacje mogą wyglądać identycznie na wszystkich platformach albo wykorzystywać specyficzny look-and-feel systemu

Moduł WebMemo

WebMemo Rozszerzenie Firefoksa Mój projekt magisterski Cel nowa implementacja historii i zakładek drzewo historii Wymagania dodanie nowej funkcjonalności bez modyfikowania istniejącej prosta instalacja efektywność

Baza danych W przeglądarce potrzebna do przechowywania historii odwiedzanych stron wypełnianych formularzy zakładek W nowych aplikacjach może być niezbędna do innych celów Wymagania odporność na awarie elastyczność format tekstowy oszczędność pamięci The last goal could have been done better...

Możliwe rozwiązania XML byłby najlepszym rozwiązaniem ale 10 lat temu obawiano się korupcji danych Zastosowanie bazy danych z ACID zakończone niepowodzeniem problemy z licencjonowaniem Stworzenie abstrakcyjnego interfejsu MDB niezależność od konkretnego rozwiązania możliwość użycia komercyjnej bazy danych w Netscape Navigator, a darmowej w Mozilli

Mork Pierwsza implementacja MDB w założeniu tymczasowa w praktyce używana do dziś... Zalety spełnia powyższe wymagania stabilność Ograniczenia nieefektywność nieczytelność

Mork przykład

Mork It is impossible for non-mozilla programs to extract data from history.dat because it uses Mork, which is and I do not use these words lightly the single most braindamaged file format that I have ever seen in my nineteen year career. from Mozilla Bug 241438

SQLite Minimalistyczna implementacja bazy danych spełnia ACID implementuje większość standardu SQL92 nierestrykcyjna licencja i dostępność źródeł Ma w przyszłości zastąpić format Mork ale nigdy nie było to priorytetem Zaimplementowany w WebMemo

Datasource Warstwa pośrednia między bazą danych a interfejsem użytkownika Dane muszą być sformatowane w RDF konieczna ręczna konwersja typów Implementacja 15 metod interfejsu RDF różne operacje na danych pełna kontrola Wykorzystywanie słownictwa Mozilli oraz własnego

Drzewo historii Pomysł przedstawienia historii jako drzewa a nie listy nie istnieje implementacja ani dla Firefoksa, ani dla IE Przechwytywanie wydarzeń historii globalna i lokalna historia pole referrer niektóre strony nie działają poprawnie Zastosowanie kontrolki drzewa jedna z najbardziej złożonych kontrolek XUL

Implementacja WebMemo Główna część kodu w C++ prawie wszystkie dostępne w sieci rozszerzenia ograniczają się do JavaScriptu JavaScript do obsługi interfejsu napisanego w XUL jeden komponent w JavaScript Kompilacja niezależna od Mozilli wymaga plików nagłówkowych komponentów Interfejsy frozen nie wystarczą Inne zagadnienia profile i uruchamianie platformy zwalnianie zadeklarowanej pamięci

Budowa pakietu content pliki XUL i CSS locale pliki DTD components moduły komponentów install.rdf opis pakietu META-INF podpis cyfrowy pakietu

Moje doświadczenia Skomplikowana konfiguracja środowiska sama kompilacja Mozilli nie jest prosta Dużo trudności szczególnie na początku słaba dokumentacja szczególnie zaawansowana niewiele materiałów w sieci duży kod źródłowy Dobre strony bardzo ładny kod źródłowy i styl programowania szeroki zakres stosowanych technologii ciekawa architektura

Podsumowanie Mozilla jest 8-letnim projektem, stabilnym i nieustannie ewoluującym Firefoks zyskał ogromną popularność Jako platforma aplikacji Mozilla jest bardzo dobra do pewnych zastosowań aplikacje sieciowe interaktywne i wizualne aplikacje W Mozilli istnieje sporo niedokończonych i niedopracowanych fragmentów kodu równie wiele funkcjonalności można dodać...

Więcej informacji Witryny http://www.mozilla.org http://developer.mozilla.org Nigel McFarlane Rapid Application Development with Mozilla David Boswell i inni Creating Applications with Mozilla Doug Turner i Ian Oeschger Creating XPCOM Components Neil Deakin, XUL Tutorial

Pokaz na żywo