Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Eclipse Rich AJAX Pla0orm

Hasonló dokumentumok
Grafikus felületek készítése 1.

JAVA webes alkalmazások

Web-fejlesztés NGM_IN002_1

RIA Rich Internet Application

Ajax és Echo 2. Bokor Attila

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

MVC. Model View Controller

Google Web Toolkit. Elek Márton. Drótposta kft.

Eclipse Rich AJAX Platform alapú webalkalmazások teljesítmény analízise. BSc szakdolgozat. Áshin László. Ráth István PhD hallgató

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Flex: csak rugalmasan!

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Broadcast Service Widget

JNDI - alapok. Java Naming and Directory Interface

Közösség, projektek, IDE

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Alkalmazásfejlesztés Eclipse RCP használatával

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

ANDROID ALKALMAZÁSFEJLESZTÉS

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

ANDROID ALKALMAZÁSFEJLESZTÉS

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Az Apache Wicket keretrendszer

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

A Java EE 5 plattform

Bevezető. Servlet alapgondolatok

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Programozás III GRAFIKA RAJZOLÁS SWING FELÜLETEN RAJZOLÁS GRAFIKA HASZNÁLATA. Rajzolni az awt csomag Graphics osztályának metódusaival tudunk.

Webshop készítése ASP.NET 3.5 ben I.

Újdonságok a Google műhelyéből. Péter Ekler

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Az IBM WebSphere Multichannel Bank Transformation Toolkit V7.1 felgyorsítja a többcsatornás alkalmazásfejlesztést

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Java Programozás 11. Ea: MVC modell

Adatbányászat és Perszonalizáció architektúra

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Stateless Session Bean

Java alkalmazás átalakítása webalkalmazássá

Szoftvertechnológia alapjai Java előadások

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

libgdx alapok, első alkalmazás

Mobil Informatikai Rendszerek

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java I. A Java programozási nyelv

Webalkalmazás fejlesztés Java EE környezetben NetBeans segítségével: JavaServer Faces 1.2 AJAX

ANDROID ALKALMAZÁSFEJLESZTÉS

Eclipse plug-ins, Rich Client Platform

Android Wear programozás. Nyitrai István

Programozási nyelvek Java

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

12.óra jquery Framework #1. Gyimesi Ákos

JavaServer Pages (JSP) (folytatás)

Adatbázisok webalkalmazásokban

Segédanyag: Java alkalmazások gyakorlat

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Multimédia 2017/2018 II.

Osztályok. 4. gyakorlat

JavaScript Web AppBuilder használata

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

webalkalmazások fejlesztése elosztott alapon

Memória játék. Felhasználói dokumentáció

Bevezetés Működési elv AJAX keretrendszerek AJAX

Gyakorlati vizsgatevékenység A

Objektumorientált programozás C# nyelven

Mobil Informatikai Rendszerek

Java felhasználói felület

Segédanyag: Java alkalmazások gyakorlat

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

Collections. Összetett adatstruktúrák

Gyakorlati vizsgatevékenység B

Szoftvertechnológia alapjai Java előadások

RIA Rich Internet Application

Java felhasználói felület

Összetett JIRA adatbázis lekérdezések

Programozási nyelvek Java

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Szervlet-JSP együttműködés

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

A szerzõrõl... xi Bevezetés... xiii

iphone és Android két jó barát...

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Átírás:

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Eclipse Rich AJAX Pla0orm

RAP bevezetés RAP és RCP RAP- alapú UI design Tartalom A RAP lehetőségei és korlátai A RAP illesztése o RAP és OSGi o RAP és J2EE

Napjaink tendenciái Asztali alkalmazások Operációs rendszer-integráció Gazdag widgetkészlet Biztonság és gyorsaság Webalkalmazások Web 2.0 nyílt szabványai Nem szükséges telepítés Könnyű kollaboráció & kommunikáció Mindkettőből a legjobbat

Mi is a RAP? Komponens- orientált webes fejlesztői környezet SWT, JFace, Eclipse workbench alapokon Eclipse plug- in menedzsment o Függések automawkus kezelése o Kiterjeszthetőség (extension points) o Életciklus menedzsment o Moduláris UI (~mashup Web 2.0 terminológiával)

A RAP célja Rich Internet ApplicaWon fejlesztés o Java nyelven o A teljes Java API használatával (vö.: GWT) o Egy Java- alapú widget toolkit használatával o Komponens- orientált alkalmazási modell alapján (OSGi) o Modularizáltan (Eclipse extension points) o AJAX és egyéb web- specifikus technológiák kézi kódolása nélkül Miért jó? o skill preservawon meglévő Eclipse RCP fejlesztők újrahasznosítása o single sourcing két legyet egy csapásra, azaz egyszerre asztali és webes kliens fejlesztése

Hogy működik ez a weben? Az Eclipse/RCP kód o 70-90%- a újrahasználható o A RAP az RCP egy (bővülő) részhalmazát valósítja meg o De: figyelni kell az inkompawbilis kódrészek jó elkülönítésére! o Fontos: fel kell készíteni az alkalmazást a több felhasználóra.

Nem feltétlenül kell az RCP kinézet

Io is workbench- et látunk!

Nézetek, szerkesztők

Hogyan működik?

Működés RWT (RAP Widget Toolkit) o SWT web alapú implementációja o A qooxdoo nevű JavaScript toolkit fut a böngészőben Az összes, SWT- re épülő könyvtár (többé- kevésbé) működik Egy fontos különbség: mulwuser működés o ApplicaWon és egyéb OSGi kötetek megosztooak a különböző munkamenetek (session) közöo o Session kezelésre külön oda kell figyelni!

Belső működés Szerver- centrikus o Minden logika a szerveren fut Renderelés o Futásidőben Javascript kód snippetek küldése a böngésző felé Minden felhasználói esemény egy állapotváltást eredményez o amit a szerver értékel ki! A böngésző felé csak a változás (delta) megy vissza.

A fejlesztő szemszögéből

A fejlesztő szemszögéből Mintha csak RCP-t programoznánk: - JDT alapszolgáltatások - PDE stb. - Alapesetben nem kell HTTP-vel, Javascripttel, HTML-lel és hasonlókkal törődni.

RAP alkalmazás fuoatása, debuggolása

RWT architektúra

RWT A legtöbb alap SWT widget megvan Fejleoebb workbench elemek is (CTabFolder, Cbanner) Browser widget Tree, Table

RWT Layoutok Minden layout megvan: o Grid, Row, Fill, Form, Stack Megvalósítás: o Általában az SWT kód másolatai = pontosan úgy működnek Működés o Minden layoutot a szerver oldal számol ki, a szerver pixelre pontosan tudja, hogy mit lát a felhasználó

Eseménykezelés Típusos és általános listenereket támogat A legtöbb listener megvan, pl.: o SelecWonListener o ControlListener o ShellListener o MenuListener o JFace data binding, validawon működik

RAP Hello World

Bővíthetőség (custom widgets) Lehetőség adoo, mélyebb tudást igényel o Komponens fejlesztő: Javascript, qooxdoo, RAP o Alkalmazás fejlesztő: csak Java API Példák o Google Maps integrawon: RAP Help o Lesz róla szó

RWT testreszabása (témák) Cél: az alkalmazásunk megjelenése egyéni legyen Lehetőségek o A widgetek bizonyos tulajdonságait állíthatjuk (RAP 1.2 újdonság: gyakorlawlag mindent, CSS- hez nagyon hasonló kóddal) o Méret, színek, keretek, betűvpusok, díszítő elemek (képek) o A témákat a custom widgetek is használhatják (de erre fel kell őket készíteni)

Branding

RAP és JFace JFace viewer framework működik o TableViewer, TreeViewer o Provider, Sorter, Filter, Decorator o RAP 1.2 újdonság: Cell Editor is működik Dialógusablakok o Standard dialógusablakok (MessageDialog, ErrorDialog) o Modális ablakok o Saját dialógusok Varázslók

RAP és a workbench

View o Teljes támogatás o Outline, ProperWes RAP és a workbench Editor o MulW- page editorok működnek PerspecWve o Beépíteo perspecwve switcher AcWon Framework (hamarosan deprecated) Command Framework

Workbench jobok, taskok RWT támogatja a Job API- t Run in background működik Progress Monitorok mennek

Eclipse 3.3 Data binding működik Eclipse UI Forms o Kezdetleges támogatás (RAP 1.1) o RAP 1.2 újdonság: Forms API nagy része elérhető Forms, Data binding

Teljesítmény, skálázhatóság Jellemző: per- session memória terhelési profil Fejlesztők jelentős erőfeszítéseket teoek az opwmalizáció érdekében Néhány publikált benchmark létezik o Nem teljesen világos az összkép Eseoanulmány: Yoxos on Demand: egy nagy rendszer hop://ondemand.yoxos.com/geteclipse/start

RAP Deployment A RAP alkalmazás telepíthető o JEE Server konténerbe (WAR) Servlet Bridge o OSGi standalone konténerbe (default) Web kiszolgáló: OSGi plug- in (Jeoy)

Innopract o Fő fejlesztő o RAP/Eclipse konzultáns o Yoxos mögöo ők állnak CAS o Qooxdoo fejlesztők Ki fejleszw? o CRM, SME fejlesztésekkel foglalkoznak 1and1 o Nagy nemzetközi ISP

RAP Honnan? hop://www.eclipse.org/rap/ hop://rapblog.innoopract.com/ hop://www.ibm.com/developerworks/library/os- eclipse- richajax1/ hop://www.infoq.com/news/2008/06/eclipse- ganymede- rap;jsessionid=a0cc55bbf7b9c7cb44d51cd26d6 FB6EE

RAP és RCP együoes használata: single sourcing a gyakorlatban

RAP és RCP közelebbről Tartalom Koncepcionális különbségek o Session, applicawon context o KriWkus erőforrások RCP alkalmazások migrálása Együoes fejlesztés: single sourcing RAP branding

Fő különbségek RCP Fájlrendszer Grafikus kontextus Egy felhasználó RAP Fájlfeltöltés Nincs rajzolási lehetőség Több felhasználó

Sessionkezelés Több felhasználós jelleg => gondoskodni kell a sessionkezelésről Nem jó a stawc/singleton állapot! Megoldás: RWT sessionkezelés RWT.getSessionStore()

RWT sessionkezelés Session id lekérése o RWT.getSessionStore().getId(); Felhasználó- specifikus adat tárolása a sessionben o RWT.getSessionStore().getHttpSession ().put(key, value); Értesítés kérése, amikor a session megszűnik o RWT.getSessionStore ().addsessionstorelistener( mylistener); A HopServletRequest objektum elérése o RWT.getRequest();

Eltérő UI paradigmák Ablak az ablakban Zavaró Be lehet zárni Megjelenés

Megjelenés Megoldás: @Override public void prewindowopen() { IWorkbenchWindowConfigurer configurer = getwindowconfigurer(); configurer.setshellstyle(swt.no_trim); } Keret eltüntetése @Override public void postwindowopen() { final IWorkbenchWindow window = getwindowconfigurer().getwindow(); Shell shell = window.getshell(); shell.setmaximized(true); } Maximalizálás

Single sourcing Cél: azonos funkcionalitású RCP és RAP alkalmazás fejlesztése o minimális költséggel o lehetőleg duplikáció nélkül o közös kódbázisból Eredmény: mindkeoőből a legjobb Specifikus részek elkülönítése Két target pla0orm váltogatása Megoldás: plugin fragment

Mi az a fragment? Nem önálló egy host pluginen belül létezik Nincs AcWvatora AutomaWkusan látja a host plugin belsejét (fragment.xml a plugin.xml helyeo) Tipikus felhasználási módok: o többnyelvűség o több pla0orm támogatása

Single sourcing RAP fragmenoel Host plugin: RCP o org.eclipse.ui függőség opcionális o org.eclipse.rap.ui függőség opcionális Fragment: RAP o Minden RAP- specifikus dolog ide jön o Entry point o Branding

API- különbségek elfedése A közös ősinterface, ezt kell használni public abstract class AboutActionHelper { } private static final AboutActionHelper IMPL; static { Class clazz = AboutActionHelper.class; Object newinstance = ImplementationLoader.newInstance( clazz ); IMPL = ( AboutActionHelper )newinstance; } public static IWorkbenchAction create( IWorkbenchWindow window ) { return IMPL.createInternal( window ); } protected abstract IWorkbenchAction createinternal( IWorkbenchWindow window );

API- különbségek elfedése Implementáció betöltése public final class ImplementationLoader { } public static Object newinstance( Class type ) { String name = type.getname(); Object result = null; ClassLoader loader = type.getclassloader(); try { Class clazz = loader.loadclass( name + "Impl" ); result = clazz.newinstance(); } catch( Throwable t ) { //... } return result; } private ImplementationLoader() {}

API- különbségek elfedése RAP- specifikus implementáció public class AboutActionHelperImpl extends AboutActionHelper { private static final class AboutAction extends Action implements IWorkbenchAction { private AboutAction() { settext( "About" ); setid( "aboutaction" ); } public void run() { MessageDialog.openInformation(null, "About", "About"); } public void dispose() {} } protected IWorkbenchAction createinternal( IWorkbenchWindow win ) { return new AboutAction(); } }

API- különbségek elfedése RCP- specifikus implementáció public class AboutActionHelperImpl extends AboutActionHelper { protected IWorkbenchAction createinternal( IWorkbenchWindow win ) { return ActionFactory.ABOUT.create(win); } }

Target pla0orm- kezelés Nem szükséges külön workspace, de lehet Használt pluginek betehetőek a target pla0ormba

RAP branding Az alkalmazás testreszabása o RCP- től eltérő módon org.eclipse.rap.ui.branding extension point

RAP branding részletesen servletname o Az URL- ben jelenik meg (default: rap) defaultentrypointid o Alkalmazásunk belépési pontja themeid o A téma azonosítója (ld. később) Wtle o A böngésző fejlécében jelenik meg

RAP branding részletesen folyt. favicon o Az oldal ikonja body o Extra HTML kód a weboldal <body> részébe exitconfirmawonclass o Az alkalmazás/böngészőfül bezárásakor kérdést megjelenítő Java osztály addiwonalheaders gyermekelemek o Extra HTML kódrészletek a weboldal <head> részébe

RWT theming Widgetek kinézetének megadása CSS- hez hasonló szintaxisú fájlban * { font: 12px Tahoma; } TableItem:even { background-color: #eef7ff; } Minden elem betűtípusának megváltoztatása Páros táblázatsorok háttérszínének megváltoztatása

RWT theming Selectorok: o Widget (Buoon, List ) o Style (PUSH, TOGGLE, CHECK, RADIO, BORDER, FLAT) o Állapot (hover, pressed, disabled, selected) Tulajdonságok: o color o padding o border o font Referencia: o hop://help.eclipse.org/galileo/topic/org.eclipse.rap.help/ help/html/reference/theming/index.html

RWT Theme Editor Készül a RAP Theme Editor Form alapú szerkesztő Előnézet hop://wiki.eclipse.org/rap_theme_editor

Honosítás A felhasználó nyelve requestek közöo változhat o Eclipse által generált stawkus Messages osztály nem jó Megoldás: RWT.NLS (RWT- specifikus) o nem lehet használni single sourcinggal Ugyanúgy properwes- fájl alapú o Lehet UTF- 8!

Honosítás megvalósítás public class Messages { private static final String BUNDLE_NAME = "org.eclipse.rap.helloworld.messages"; //$NON- NLS- 1$ private Messages() {} // példányosítás tiltása public static Messages get() { // példány visszaadása Class clazz = Messages.class; return (Messages)RWT.NLS.getUTF8Encoded ( BUNDLE_NAME, clazz); } // Üzenetkonstansok public String HelloWorldView_Message;

Honosítás megvalósítás Nyelvi fájlok: o org.eclipse.rap.helloworld.messages.properwes HelloWorldView_Message = Hello RAP World! o org.eclipse.rap.helloworld.messages_hu.properwes HelloWorldView_Message = Helló RAP világ! Használat: o label.settext(messages.get().helloworldview_message);

Saját RWT widget létrehozása áoekintés Lépések o Java: Widget- interfész létrehozása o JavaScript: Widget létrehozása qooxdoo framework segítségével o A kliens- és szerveroldal összekötése o JavaScript beregisztrálása plugin.xml- ben Részletesen: hop://help.eclipse.org/galileo/topic/ org.eclipse.rap.help/help/html/advanced/custom- widget.html

Saját widget felkészítése themingre org.eclipse.rap.ui.themeablewidgets extension point Szükséges erőforrások: o Theme adapter: org.eclipse.rwt.theme.icontrolthemeadapter o Theme definiwon: XML fájl o Appearance fragment: CSS template Részletesen: hop://dev.eclipse.org/viewcvs/index.cgi/ org.eclipse.rap/org.eclipse.rap.help/help/html/ advanced/theming- custom.html? root=technology_project&view=co

Kitekintés: RCP- RAP- ercp Három nagy pla0orm

Kitekintés: RAP 1.3 újdonságok Theme contribuwon: o Nem kell teljesen új témát készíteni o Elég a különbségeket kezelni Kiterjesztési pont: org.eclipse.rap.ui.themes

Kitekintés: RAP 1.3 újdonságok Graphics Context: o SWT Canvas kezelés o Egyelőre csak részhalmaza a SWT opcióknak

Kitekintés: RAP 1.3 újdonságok EMF on RAP o EMF tree editor RAP feleo is működik

Kitekintés: RAP 1.3 újdonságok Egyéb apróságok o Böngésző előzmények kihasználása o DateTime választó widget o Widgetek egyedi témázása o Drag and drop o Eclipse Help támogatás o Cheet Sheet támogatás