Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków Wydziału Matematyki i Informatyki Uniwersytetu Adama Mickiewicza w Poznaniu Czyli w skrócie:

Podobne prezentacje


Prezentacja na temat: "Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków Wydziału Matematyki i Informatyki Uniwersytetu Adama Mickiewicza w Poznaniu Czyli w skrócie:"— Zapis prezentacji:

1 Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków Wydziału Matematyki i Informatyki Uniwersytetu Adama Mickiewicza w Poznaniu Czyli w skrócie: kINO ;)

2 Ale zanim zaczniemy…

3 Wprowadzenie do J2ME Czyli: Napisz swoją własną grę na komórkę Mariusz Lisiecki, III rok Informatyka

4 Program wykładu Ogólnie o J2ME – CDC, CLDC, MIDP Wybrane środowiska programistów J2ME Przykładowe kody prostych MIDletów Możliwości J2ME 3D w J2ME Publikowanie swoich MIDletów Raport z NetBeansDay – Wykład NetBeans Mobility Pack – wybrane zagadnienia Przyszłość J2ME (Dalsza) literatura

5 J2ME – co to właściwie jest? Java 2 Micro Edition, a właściwie Java Platform, Micro Edition Specyfikacja opracowana przez Sun Microsystems Rozbudowane i elastyczne środowisko do programowania aplikacji uruchamianych na urządzeniach mobilnych i wbudowanych … Telefony komórkowe Palmtopy PDAs (Personal Digital Assistant) TV set-top boxes (? ;) Drukarki Inne … czyli urządzeniach z ograniczeniami nałożonymi na: pamięć, wyświetlanie oraz energię.

6 Java Platform

7 J2ME – składowe i podziały Na J2ME składają się 3 rzeczy: Konfiguracja – podstawowy zbiór bibliotek Profil – zbiór różnych API (Application Programming Interface) obsługiwany przez węższe grono urządzeń Pakiety opcjonalne – zbiór API powiązanych z konkretnymi technologiami J2ME przyjęło się dzielić na 2 bazowe konfiguracje CDC – Connected Device Configuration – konfiguracja dla urządzeń z większymi możliwościami, np. smartfonów CLDC – Connected Limited Device Configuration – konfiguracja dla słabszych urządzeń, np. telefonów komórkowych

8 CLDC i MIDP Dwie wersje CLDC CLDC 1.0 – bazowa CLDC 1.1 – główną różnicą jest wsparcie dla operacji zmiennoprzecinkowych MIDP – Mobile Information Device Profile – uzupełnienie konfiguracji o dodatkowe klasy użytkowe MIDP 1.0 MIDP 2.0 – zweryfikowane MIDP dodatkowe API, rozszerzające możliwości o: ulepszony interfejs graficzny obsługa multimediów ułatwienia dla programistów gier więcej możliwości komunikacyjnych poprawione bezpieczeństwo MIDP 3.0 – w konstrukcji MIDP + CLDC pozwala na tworzenie różnorakich aplikacji: gier, aplikacji biznesowych

9 Wybrane środowiska programistyczne Sun Java Wireless Toolkit (WTK) brak wbudowanego edytora kodu EclipseME – plugin do Eclipsea NetBeans Mobility Pack

10 Dlaczego NetBeans Mobility Pack? Bo używa NetBeans ;) W wersji NetBeans 6.0+ standardowo zawarty w środowisku … … co oznacza brak konieczności instalacji, jak w przypadku Eclipsea Dobry graficzny edytor dla tzw. Visual MIDletów łatwiejsze uruchamianie niż w Eclipse przy zmianie skóry emulatora nie robi jakichś dziwnych preweryfikacji, kompilacji itd.. wbudowany (niedoskonały niestety ) edytor do SVG (zgodnym z SVG tiny (SVG 1.1) ) w NetBeans 6.0

11 MIDlety Aplikacja uruchamiana na urządzeniu mobilnym obsługującym MIDP Przeważnie grupuje je się w zestawy MIDletów, tzw. MIDlet Suites Plik.jar Plik.jad Aplikacja musi posiadać klasę rozszerzającą javax.microedition.midlet.MIDlet

12 MIDlety – 3 x 3 3 abstrakcyjne metody startApp() destroyApp() pauseApp() 3 stany aktywny spauzowany zniszczony 3 metody zmieniające stan notifyPaused() notifyDestroyed() resumeRequest()

13 Meine erste MIDlet ;) import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** Mariusz Lisiecki */ public class ErsteMIDlet extends MIDlet { public ErsteMIDlet() { Form form = new Form("Meine erste MIDlet!"); String hallo = "Wilkomm, die Welt!"; form.append(hallo); Display.getDisplay(this).setCurrent(form); } public void startApp() {} public void pauseApp() {} public void destroyApp(boolean unconditional) {} }

14 Inne rodzaje wyświetlaczy Form uniwersalna Canvas najbardziej użyteczny dla gier List menu aplikacji, itp. TextBox okienko tekstowe pokrywa cały wyświetlacz Alert używany do komunikatów

15 Canvas Pozwala na rysowanie, a także na przechwytywanie wciśniętych klawiszy, obsługę wskaźnika Klasa abstrakcyjna trzeba zaimplementować metodę paint(Graphics g) aby odrysować jej zawartość należy wywołać metodę repaint(); pozostałe metody zdarzeniowe nie są abstrakcyjne, ale za to są po prostu puste (np. metody keyPressed(), keyReleased(), itp.) posiada kody dla klawiszy Rozszerzenie możliwości – klasa GameCanvas wbudowane podwójne buforowanie kolejkowanie wciśnięty klawiszy

16 Interfejs użytkownika - komendy Próżno szukać buttonów – przycisków Za to są polecenia – klasa Command Command(etykieta, typ, priorytet); typ określa rodzaj komendy, ma wpływ na położenie priorytet pozwala na tworzenie kilku komand takiego samego typu Wzorzec projektowy Listener W klasie wyświetlacza (Form, Canvas), który ma reagować na wybór komendy, musi zostać ustawiony Słuchacz: metoda setCommandListener( CommandListener cl );

17 CommandListener Interfejs Trzeba zaimplementować metodę: commandAction( Command c, Displayable d) Trzy podejścia: MIDlet obsługuje zdarzenia wszystkich swoich wyświetlaczy (implementuje interfejs), a następnie w jakiejś swojej metodzie dla każdego wyświetlacza wywołuje setCommandListener(this); Niezbyt dobre podejście dla dużej liczby wyświetlaczy Każdy wyświetlacz implementuje interfejs CommandListener osobno Wykorzystanie klas anonimowych w każdym z wyświetlaczy: setCommandListener( new CommandListener() { public void commandAction( … } );

18 Możliwości J2ME Multimedia Oddzielne API: Mobile Media API 1.1 – JSR-135 Nie jest powszechnie dostępne w telefonach komórkowych … … dlatego najbardziej podstawowe elementy wydzielono i dołożono do MIDP 2.0 Możliwości: odtwarzanie plików dźwiękowych (midi/wav/mp3?) odtwarzanie plików wideo (mpeg) nagrywanie audio wykonywanie zdjęć nagrywanie plików wideo Obsługa RMS (Record Management Store)

19 Przetwarzanie XML (eXtensible Markup Language) JAXP – JAva XML Parser część JSR-172 (J2ME Web Services) … … która wymaga MIDP 2.0 … … a do tego nie występuje we wszystkich telefonach, które ten profil posiadają Alternatywa: darmowa biblioteka kXML w przeciwieństwie do JAXP, obsługuje dwa modele parsowania dokumentu XML SAX (Simple API for XML) – parsowanie linijka po linijce DOM (Document Object Model) – wczytuje cały dokument i tworzy drzewo Możliwości J2ME

20 Bluetooth JSR-82 - Bluetooth API Łączenie się telefonów między sobą Łączenie się z serwerami na których działają serwlety Możliwości J2ME

21 Obsługa SVG (Scallable Vector Graphics) Nie musimy się przejmować wielkością wyświetlacza Niestety potrzeba plików kompatybilnych z SVG Tiny (SVG 1.1) … a o środowisko ciężko (chyba?) w NetBeans 6.0 dodatkowe pakiety wspierające współpracę z SVG + wspomniany wbudowany (aczkolwiek bardzo niedoskonały jeszcze) edytor wizualny + ręczny do plików Możliwości J2ME

22 pakiet javax.microedition.lcdui.game Użycie wspomnianej GameCanvas (ale wymaga MIDP 2.0 – w przypadku 1.0 śmiało można próbować ze zwykłym Canvas) funkcje i stałe: keyPressed(), keyReleased(), keyRepeated() int getGameAction(int keyCode) UP, RIGHT, DOWN, LEFT, FIRE, GAME_A, itp… klasa Sprite warstwy: Layer, TiledLayer, LayerManager Gry w J2ME!!!

23 3D 3D w 2D - dla słabszych telefonów stara dobra technika -> RayCasting Wymaga znajomości dość skopmlikowanych algorytmów oraz biegłości w matematyce Java 3D Mobile – JSR 184 Dwa tryby: immediate retained – dla leniwych Gry w J2ME!!!

24 Możliwości: Definiowanie dowolnych struktur za pomocą trójkątów Definiowanie normalnych do powierzchni Możliwy Culling – pomijanie rysowania powierzchni niewidocznych Dodawanie świateł (różnego rodzaju) do sceny Dodawanie tekstur i materiałów do obiektów Dodawanie wielu kamer do sceny (oczywiście ujęcie w danej chwili tylko z jednej) Możliwa animacja Java 3D Mobile

25 Tryb immediate Dość skomplikowane, Kilkanaście klas, Dla definiowania obiektów: VertexArray, VertexBuffer, IndexBuffer, TriangleStripArray, Dla świateł: Light, Material, PolygonMode Dla tekstur: Texture2D, Appearance Dla kamer: Camera Dla przekształceń: Transform (Macierz) Ale za to nad wszystkim panujemy. Niestety łatwo o błąd… Java 3D Mobile

26 Tryb Retained Graf sceny – idealnie nadaje się do tworzenia i efektywnego zarządzania złożonymi scenami. Proste i zwięzłe kody Możliwość wczytywania gotowych obiektów a nawet światów z pliku zewnętrznego w formacie.m3g Można zatem użyć dowolnego środowiska graficznego, które posiada opcję eksportu sceny do pliku.m3g np. Blender (eksport do.m3g możliwy po ściągnięciu pliku) Nawet animację i tekstury można określić na zewnątrz Niestety nie można przesadzić… a i tak może to się odbić na wydajności. Java 3D Mobile

27 Publikowanie swoich MIDletów w internecie Przegrywamy pliki.jar i.jad naszej aplikacji na serwer (np. z wykorzystaniem klienta FTP – WINSCP) W telefonie wpisujemy adres serwera wraz z plikiem.jad, np. po połączeniu powinny się pojawić informacje o aplikacji (nazwa, dostawca, itp.) oraz prośba o potwierdzenie pobrania … ale być może, że nie zadziała i plik jad zostanie wyświetlony jako plik tekstowy … :/ trzeba się wtedy dowiedzieć, czy serwer obsługuje odpowiednie typy MIME (Multipurpose Internet Mail Extensions) dla plików.jad: text/vnd.sun.j2me.app-descriptor dla plików.jar: application/java-archive

28 Przyszłość J2ME MIDP 3.0 ? (na bazie dyskusji z NetBeansDay) Coraz większe możliwości urządzeń – coraz lepsze telefony komórkowe, itp. J2SE na telefonach? – Być może za 5 lat… Nowa technologia JavaFX Mobile Póki co jedna wielka niewiadoma… Docelowo ma wchłonąć J2ME

29 (Dalsza) Literatura Zbyt wielu pozycji książkowych po polsku nie ma… Krzysztof Rychlicki-Kicior: J2ME. Java dla urządzeń mobilnych. Ćwiczenia zupełne podstawy, dla początkujących Krzysztof Rychlicki-Kicior: J2ME. Praktyczne projekty użyteczne projekty, laicy też sobie poradzą Janusz Grzyb: J2ME. Tworzenie gier bardzo dobra i do tego w miarę aktualna pozycja - polecam - dokumentacja on-line MIDP – Java Mobile 3D (JSR 184 – Java Specification Request 184) - JavaFX Mobile - by przekonać się, że praktycznie nic tam nie ma :/ ;)

30 Dziękuję za uwagę, cierpliwość i wyrozumiałość!


Pobierz ppt "Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków Wydziału Matematyki i Informatyki Uniwersytetu Adama Mickiewicza w Poznaniu Czyli w skrócie:"

Podobne prezentacje


Reklamy Google