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

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Programowanie obiektowe
Programowanie obiektowe
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Interfejs użytkownika do zarządzania konfiguracją oprogramowania
WEB SERVICE Stefan Rutkowski.
Dodawanie i usuwanie oprogramowania
Architektura systemu Gra strategiczna „Strusia Jama”
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
.NET - możliwości Jarosław Balcer & Jan Góralski.
Błażej Pietrzak J2ME CLDC MIDP 1.0 Błażej Pietrzak
Eclipse jako IDE III a.
Obsługa serwera zdalnego przez klienta FTP
Systemy operacyjne.
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
Programowanie obiektowe. Obiekty. Metody. Właściwości.
Wzorce projektowe w J2EE
Tworzenie stron w języku WML jest zbliżone do tworzenia stron w HTML. W obydwu przypadkach używa się do tego celu znaczników (tagów). Zadaniem znaczników.
Współczesne systemy informacyjne
Systemy zarządzania treścią CMS
trójwymiarowy labirynt z fizyką i przeszkodami
WebSphere Everyplace Micro Environment
WebSphere Everyplace Micro Environment IBM Workplace Client Technology, Micro Edition Monika Nawrot, Tomasz Jadczyk, Tomasz Sadura KI, EAIiE, AGH.
WebSphere Everyplace Micro Environment IBM Workplace Client Technology, Micro Edition Monika Nawrot, Tomasz Jadczyk, Tomasz Sadura KI, EAIiE, AGH.
Forum internetowe, przykład skryptu, Funkcjonalność.
Rozwój aplikacji przy wykorzystaniu ASP.NET
System webowy do tworzenia kolektywnych prototypów aplikacji sieciowych i mobilnych Łukasz Przywarty
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.
* HTML5 i CSS3 w nowoczesnych serwisach internetowych
Instytut Tele- i Radiotechniczny WARSZAWA
Architektura Systemu Źródło:
Telefon przyjazny programistom JAVA – szybkie wprowadzenie
Prezentacja Adrian Pyza 4i.
HTML5 - czy przewróci do góry nogami rynek aplikacji?
Instalacja i narzędzia. Beta-kod i maszyna wirtualna
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
Mobilny system sprzedaży z wykorzystaniem sieci telefonii komórkowej
Buforowanie D e f i n i c j a.
Prezentacja Adrian Pyza 4i.
Programowanie obiektowe 2013/2014
Systemy zarządzania treścią Wykład 5
Projektowanie stron WWW
W W W Łukasz Stochniał.
Telefony Świata.
HTML (ang. HyperText Markup Language ) – język do tworzenia stron internetowych opierający się na znacznikach, czy inaczej je nazywając – tagach. Język.
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Podstawy języka skryptów
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Rozwiązania biznesowe RIM. Czym jest RIM? kanadyjska firma Research In Motion założona w 1984 roku w Waterloo. producent znanej linii urządzeń BlackBerry.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Wzorce Projektowe w JAVA
Platforma .Net.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Department | 9/16/2015 | © Robert Bosch GmbH All rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution,
System lokalizacji urządzeń mobilnych
(według:
Programowanie Obiektowe – Wykład 2
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Programowanie obiektowe – zastosowanie języka Java SE
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
Windows Workflow Foundation
JavaBeans by Paweł Wąsala
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

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

Gratulacje dla Adama i Pawła!! Ale zanim zaczniemy… Gratulacje dla Adama i Pawła!!

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

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

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ę.

Java Platform

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

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 1.0 + 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

Wybrane środowiska programistyczne Sun Java Wireless Toolkit (WTK) brak wbudowanego edytora kodu EclipseME – plugin do Eclipse’a NetBeans Mobility Pack 

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

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

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()

Meine erste MIDlet ;) import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * @author 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) {}

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

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

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 );

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( … } );

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)

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

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

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

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

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

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

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…

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) http://www.nelson-games.de/bl2m3g/source/m3g_export.py 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.

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. http://atos.wmid.amu.edu.pl/~d301627/Mobile3DTest.jad 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

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

(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 http://java.sun.com/javame/reference/apis/jsr118/index.html - dokumentacja on-line MIDP 2.0 http://www.jcp.org/en/jsr/detail?id=184 – Java Mobile 3D (JSR 184 – Java Specification Request 184) http://www.sun.com/software/javafx/mobile/index.jsp - JavaFX Mobile - by przekonać się, że praktycznie nic tam nie ma :/ ;)

Dziękuję za uwagę, cierpliwość i wyrozumiałość! Do zobaczenia na następnym wykładzie!!