Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków

Podobne prezentacje


Prezentacja na temat: "Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków"— 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 Gratulacje dla Adama i Pawła!!
Ale zanim zaczniemy… Gratulacje dla Adama i Pawła!!

3 Czyli: „Napisz swoją własną grę na komórkę”
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 PDA’s (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 Eclipse’a 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 Eclipse’a 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 3 stany
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 Trzy podejścia:
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 Obsługa RMS (Record Management Store)
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 Możliwości J2ME 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

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

21 Możliwości J2ME 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

22 Gry w J2ME!!! 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

23 Gry w J2ME!!! 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

24 Java 3D Mobile 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

25 Java 3D Mobile 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…

26 Java 3D Mobile 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.

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 2.0 – 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ść!
Do zobaczenia na następnym wykładzie!!


Pobierz ppt "Sekcja Inżynierii Oprogramowania Koła Naukowego Informatyków"

Podobne prezentacje


Reklamy Google