Erfahrungsbericht Anwendungsentwicklung mit RAP



Ähnliche Dokumente
Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Spring Dynamic Modules for OSGi Service Platforms

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Björn Heinemann Leiter Entwicklung Energiewirtschaft

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

DCCS Lotusphere Nachlese 2012 Was sind XPages? Mobile Features für XPages

Designänderungen mit CSS und jquery

Java Entwicklung für Embedded Devices Best & Worst Practices!

Inhaltsverzeichnis. TeiM. V E E.l E.2 E.3 E.4. Vorwort von Stefan Tilkov Einleitung Zielgruppe Über dieses Buch Konventionen Dank

plus Flickerfeld bewegt sich nicht

Neuerungen in ArcGIS 9.3.1

Die Eclipse Rich Client Platform. Martin Lippert Consultant und Coach

Thomas Freitag achelos GmbH SmartCard-Workshop achelos GmbH

Java Enterprise Architekturen Willkommen in der Realität

Das Interceptor Muster

Leitfaden zur Nutzung von binder CryptShare

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

JEAF Cloud Plattform Der Workspace aus der Cloud

SHAREPOINT Unterschiede zwischen SharePoint 2010 & 2013

Internet Explorer Version 6

Verwalten Sie Ihre Homepage von überall zu jeder Zeit! Angebote und Informationen auf

Revit Modelle in der Cloud: Autodesk 360 Mobile

Adventskalender Gewinnspiel

Look Inside: desite. modellorientiertes Arbeiten im Bauwesen. B.I.M.

Überblick. Allgemeines, Geschichtliches. Architektur. Oberfläche. Plugins und deren Einsatz

NEUES AUS DER ENTWICKLUNG. April 2015

Excel beschleunigen mit dem mit Windows HPC Server 2008 R2

Content Management System mit INTREXX 2002.

Erfolgreicher Ums9eg auf Git

Systemvoraussetzungen

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

SSI WHITE PAPER Design einer mobilen App in wenigen Stunden

Die Entwicklung des Open-Source. Source-Tools. zum Datenbankabgleich von Karsten Panier. Inhalt

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

eclipse und Komponenten

Generisch entwickelte Software-Werkzeuge anpassbar wie ein Chamäleon

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Faclets. Eine alternative View Technologie um JSF Applikationen OHNE JSP zu entwickeln Wird unter java.net gehostet Open Source, CDDL Lizenz

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Einführung in Maven und GWT

InfoPoint vom 9. November 2011

VEDA Managed Services VEDA-SOFTWARE

Übergreifend projektieren in einem Steuerungsprojekt: CODESYS Visualization

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

Webseiten und Web-Apps grafisch gestalten mit HTML5 Canvas ohne Flash und sonstige Tools

TYPO3 in der Praxis. KuKo Rosenheim. 21. Oktober 2009

Macher Solutions Produktinformation SAP Crystal Reports 2011

TYPO3 CMS 6.2 LTS. Die neue TYPO3- Version mit Langzeit- Support

Was ist neu in Sage CRM 6.1

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

XQueue Product Sheet - Seiten Editor

PRESman. Presentation Manager. Reduzieren Sie nachhaltig die Kosten für das. Erstellen, Verwalten und Verteilen Ihrer

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R3: Administration

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Secure Network Communications (BC-SEC-SNC)

FORGE2015 HDC Session 4. Nachhaltige Infrastruktur als technologische Herausforderung. Tibor Kálmán Tim Hasler Sven Bingert

SharePoint Demonstration

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

Übung: Verwendung von Java-Threads

Der frühe Tester fängt den Bug

E-Business Architekturen

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Remote Eclipse RCP Management

OpenSource bei PostFinance Einsatz in der Software Entwicklung. informativ

Automatisches Exploratives Testen von Webanwendungen

HMS. Statistiken mit SAS ins Internet. HMS Analytical Software GmbH - Johannes Lang

PEFC Logo Generator 1

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Infrastruktur entwickeln mit Chef

I N F O R M A T I O N V I R T U A L I S I E R U N G. Wir schützen Ihre Unternehmenswerte

Analyse leicht gemacht - SAS Enterprise Guide. Gerd Hoffmann Technical Competence Center SAS Deutschland

Nutzung und Bereitstellung von OGC-Diensten in ArcGIS 9.3

eclipse - Entwicklungsumgebung und mehr ETIS SS05

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Standardisiert aber flexibel

Unified Communications & Collaboration

Contao: Mehr als nur Website-Erstellung. Contao Konferenz 2011

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Neue Funktionen in Innovator 11 R5

Google ist mehr als eine Suchmaschine

Make-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Planung, Analyse und Reporting dezentral im Web

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Qualitätsmanagement im Projekt

VEDA Managed Services IBM POWER SYSTEMS

Java-Tutorium WS 09/10


Alexander Delater, Barbara Paech RUPRECHT-KARLS-UNIVERSITÄT HEIDELBERG

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

Sichern der persönlichen Daten auf einem Windows Computer

Di 8.4. Silverlight: Windows Presentation Foundation für s Web. Christian Wenz

T Y P O 3 M I T M A G E N T O E C O M M E R C E M I T E N T E R P R I S E C O N T E N T M A N A G E M E N T

Anforderungen an die HIS

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

Transkript:

CAS Software AG Richtig informiert. Jederzeit und überall. Erfahrungsbericht Anwendungsentwicklung mit RAP Frank Appel, Innoopract Informationssystem GmbH Stefan Röck, CAS Software AG

Agenda Vorstellung teamcrm RAP-Framework Basics Custom Widgets Integration mit Browser-Addins Deployment

Hintergrund teamcrm CRM-Anwendung für kleine und mittelständische Unternehmen Vertrieb: Software as a service (SaaS) Zentrales Hosting Mandantenfähig CRM-Funktionalitäten Adressmanagement Termine+Aufgaben Kalender E-Mail Verkaufschancen Reports,

Meilensteine Dez 2006: Projektbeginn Technologieauswahl: GWT vs. RAP PRO GWT Relativ weit fortgeschritten Community, Widgets, Libs PRO RAP Bewährte Konzepte (SWT, JFace) Dokumentation Ansprechendes Layout Erweiterbarkeit durch komponentenorientierte Laufzeitumgebung Mär 2007: Start der Entwicklung Agiles Vorgehen (SCRUM) Regelmäßige Abstimmung mit RAP-Team von Innoopract Mär 2008: Erste öffentliche Demo auf der Cebit Aug 2008: Release v1

Demo

Was ist RAP? Plug-ins, Plug-ins, Plug-ins... OSGi spezifiziert ein dynamisches Komponentenmodell: 1. Module Kapselung und Deklaration von Abhängigkeiten 2. Life Cycle API für Lifecycle Management 3. Service Registry Bereitstellung von Funktionalität 4. Security layer Einschränken von Funktionalität Eclipse stellt mit Equinox eine OSGi Implementierung zur Verfügung

Was ist RAP? Bereitstellung eines leistungsstarken UI Konzepts 1. Standard Widget Toolkit (SWT) stellt der Eclipse Plattform native Widget Funktionalität betriebsystemunabhängig zur Verfügung 2. JFace stellt Klassen zur Verfügung, die Routineaufgaben der Oberflächen Programmierung vereinfachen 3. Workbench ist verantwortlich für die Präsentation und Koordination der Benutzeroberfläche

Was ist RAP?

Was ist RAP? RAP Wiederverwendung von RCP Plug-ins 1. 70% - 90% Wiederverwendung ist möglich 2. RAP implementiert nur eine Teilmenge von RCP! 3. Auslagerung inkompatiblen Codes in Fragmente 4. Anwendungen müssen Multi-User fähig werden

Wie funktioniert RAP? 1.SWT wird von RWT ersetzt - RWT stellt die Oberfläche im Browser dar 2.Die darüberliegenden Schichten bleiben aber größten Teils unverändert 3.RWT benutzt qooxdoo um Widgets im Browser darzustellen 4.Unterschiede: Multi-User Umgebung: OSGi Bundles werden zwischen Sitzungen geteilt Zusätzliche API für spezielle Aufgaben der Web-Programmierung

Wie funktioniert RAP? The Request Lifecycle 1.Am Ende der ReadData Phase sind alle Widget-Attribute mit dem Client synchronisiert 2.Diese Attribute werden zum späteren Vergleich gepuffert 3.Während der ProcessAction Phase können Änderungen der Widget-Attribute auftreten 4.Die Render Phase vergleicht die Attribute mit den gepufferten Werten und schickt nur das Delta an den Client

RAP aus Sicht des Entwicklers Der Applikationsstart beinhaltet die Ableitung oder Implementierung folgender Typen: WorkbenchAdvisor WorkbenchWindowAdvisor ActionBarAdvisor IPerspectiveFactory Diese sind RCP Entwicklern sehr vertraut und dienen dem gleichen Zweck wie ihre RCP Equivalente

RAP aus Sicht des Entwicklers 1. JDT: Content Assist, Refactoring, etc., PDE, Javadoc 2.Der Entwickler kommt nicht mit Javascript, CSS, HTTP, etc. in Berührung

RAP aus Sicht des Entwicklers

Anwendungsarchitektur Modularisierung mittels Plug-Ins Lose Kopplung Definierte Schnittstellen Leichte Austauschbar- und Erweiterbarkeit Analogie zur Eclipse IDE Eclipse IDE Tools Editoren Sprachen teamcrm Branchenlösungen Editionen

Plug-In-Abhängigkeiten Zwei Arten von Abhängigkeiten Package-Imports Analog zur Verwendung von Bibliotheken Public Plugin 1 Plugin 2 API Extension Points Lose Kopplung Abhängigkeit wahlweise optional Plugin 1 Plugin 2

Anwendungsarchitektur Plug-Ins application cockpit calls addresses reports documents campaigns tasks appoint- ments opportunities custom widgets base.ui jars base.core

Integration von Add-Ins In teamcrm: lokale Add-Ins für Komfortfunktionen Dokumentenhandling (Internet Explorer, Firefox) Emails (Outlook, Thunderbird) Serienbriefe (Word) Demo Kommunikation zwischen lokalen Add-Ins und teamcrm mittels Service-Handler Service-Handler laufen im Session-Kontext Server-getriggerte UI-Updates möglich (Beispiel: Neue archivierte E-Mail)

Custom Widgets Beispiele Kalender Toolbar Datepicker Slider Textfeld mit Vorschlagsliste Bestandteile Qooxdoo-Implementierung Java-SWT-Widget RAP Life-Cycle-Adapter

Custom Widgets cont. Anwendung JFace RAP-Widget Life Cycle Adapter Java Entwicklung Layer-spezifisch Test und Demos je Schicht Umfangreiches Tooling für JS-Schicht Property-Editor Statische Code-Analyse Build-Tools RAP-Wrapper Qooxdoo- Widget JavaScript

Fehlersuche Einfacher: Bugs in Anwendungscode. Debugging lokal in Eclipse (Jetty) oder Remote (Tomcat) Schwieriger: Bugs in Custom-Widgets (JavaScript) Debugging mit Firebug (Firefox-Plug-In) relativ komfortabel Tests in allen Browsern notwendig In teamcrm: Umfangreiches Tooling für JS-Widgets (Objektinspektor, Code-Anomalien, etc.) Qooxdoo-Know-How unabdingbar Aussichtslos: Bugs im RAP-Framework www.eclipse.org/rap/bugs.php

Theming Großteil des Aussehens von Widgets über Themes anpassbar Farben, Ränder, Hintergrund, Fonts, etc Realisierung recht mühselig und zeitaufwändig Themes werden statisch geladen Anwendungsneustart, um Änderungen zu sehen Varianten für einen Widgettyp erst seit kurzem möglich Definition über Property-Dateien (in Zukunft CSS) # Space between image and text # default: 2px button.spacing: 5px # Font for buttons with style PUSH or TOGGLE # default: 11px "Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif button.font: 12px "Segoe UI", Arial, Helvetica, sans-serif

Theming

Anwendung ohne Theming

Deployment Presentation-Layer innerhalb von Equinox Business und Data Layer außerhalb Integration von Nicht- OSGi Libs notwendig Applikationsserver Javax-Servlet Kommunikation über ServletBridge Externe Packages in Equinox-Kontext verfügbar Direkter Zugriff auf Java-Klassen möglich

Build-Prozess Vollautomatisierter Daily-Build Eclipse Release Enginieering (Releng) Abrufen der Sourcen Kompilieren Feature erstellen War-File packen Auf Test-Rechnern verteilen Der Deployment-Prozess ist relativ stabil Aber: Bundle-Abhängigkeiten werden erst zu Laufzeit aufgelöst Fehleranalyse oft langwierig und mühsam

Performance DB Appl.-Server RAP-Server Browser Anforderungen an Browser enorm 30.000 Zeilen JS-Code in Startseite ~ 4000 <div> Viele kleine Requests Geschwindigkeit Viel RAM & Multi-Core ein Plus Firefox 3, Safari spitze, IE7 eher zäh

Speicher & Performance Browser Browser RAM nach Start RAM nach Demo Firefox 2 16 MB 68 MB Firefox 3 RC1 35 MB 112 MB Safari 40 MB 125 MB IE 7 34 MB 318 MB IE 8 Beta 26 MB 278 MB

Fazit RAP bietet mit SWT, JFace, Workbench solides Fundament für Anwendungen Saubere Anwendungsarchitektur möglich Modularisierung mittels Bundles MVC mit JFace-Viewern Lose Kopplung dank SelectionService, etc. Einschränkungen RCP-Komponenten manchmal nicht flexibel genug Theming recht aufwändig Browser als Laufzeitumgebung nur bedingt geeignet

The end Demo: Plug-ins austauschen

Backup